C++で「ある数値を6等分して、その結果を切り上げたい」というケースは、実務でも競技プログラミングでも意外とよく出てきます。
この記事では、そんなときに便利な**「整数の切り上げテクニック」**を紹介します。
💡 目的:nを6等分して切り上げる
例えば、次のような状況を考えてみましょう。
- 人数
nを6人ずつのグループに分けると、何グループ必要になるか? - データ
n件を6件ごとに処理したいが、余った分も1グループとして扱いたい。
このようなとき、単純に n / 6 としてしまうと、切り捨てになってしまい、意図しない結果になります。
✅ C++コードでの実装例
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
cout << (n + 6 - 1) / 6 << endl;
}このコードのポイントは、以下の一行です:
(n + 6 - 1) / 6📌 なぜ (n + 6 - 1) / 6 なのか?
◾ 通常の割り算:切り捨て
C++では整数同士の割り算は常に切り捨てになります。
例:
cout << 5 / 6 << endl; // 出力は 0◾ 切り上げの仕組み
整数で割り算の切り上げをするには、以下の式が定番です:
(n + d - 1) / dここで、
n:割られる数d:割る数(今回なら6)
例:
n = 6→(6 + 5) / 6 = 11 / 6 = 1n = 7→(7 + 5) / 6 = 12 / 6 = 2
このように、割り切れない場合でもきちんと1つ多めにグループ化されるわけです。
📊 入力と出力の例
入力 n | 出力 (n + 5) / 6 | 説明 |
|---|---|---|
| 6 | 1 | 6人→1グループ |
| 7 | 2 | 7人→2グループ(余り1人) |
| 12 | 2 | ちょうど2グループ |
| 13 | 3 | 余り1人で3グループ目が必要 |
🚀 応用例
このテクニックは以下のような場面でも活用できます:
- ページネーション(6件ごとのページ表示)
- 配列を分割して並列処理
- バッチ処理のグループ分け
📝 まとめ
n / 6は切り捨て。必要なのは「切り上げ」。- 切り上げには
n + 6 - 1を使う:(n + 5) / 6 - 汎用的に使える整数の切り上げ式:
(n + d - 1) / d
このような基本だけど重要な数学的テクニックを知っておくと、実装がグッと楽になります!
🔎 関連キーワード(SEO対策)
C++ 切り上げ, 整数除算 切り上げ, 6等分 C++, バッチ処理 グループ分け, 競技プログラミング 数学テクニック, ページネーション 算出方法, 丸め処理 C++