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 = 1
n = 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++