ちょっとした算数の問題!
問題概要
サイコロを転がしていく。サイコロの上の目の値を足していく。
その総和が 以上となるまでの最小回数を求めよ。
制約
考えたこと
6, 5, 6, 5, ... と繰り返していくのが最適である。それを求めるために、「2 回で 11」を限界まで繰り返したあとで、余ったところの帳尻を合わせる方針をとろう。
まず、res = X / 11 * 2
回移動して、r = X % 11
だけ余る。
- のとき:
res
を 1 増やす - のとき:
res
を 2 増やす
とすればよい。
コード
#include <bits/stdc++.h> using namespace std; int main() { long long x; cin >> x; long long res = (x / 11) * 2; long long r = x % 11; if (r > 0) res++; if (r > 6) res++; cout << res << endl; }