実行時間制限: 2 sec / メモリ制限: 1024 MB / Difficulty: 91
問題概要
を満たす整数 について、 を出力せよ。
制約
- 問題概要の通り
考察
AtCoder頻出の除算と天井関数に関する問題。 C++ を使う上でこのようなケースに遭遇したときに気を付けるべきことは2つ。
- C++ 標準ライブラリにある
ceil
関数は、引数にdouble
型をとるので、だいたい ぐらいの精度までしかない。 - C++ の除算で割り切れないときは、 方向へ丸める。つまり、
ceil(a / b)
の結果は と等しくならない。
この問題を回避するために、 のときは という公式を使うことができる。
また、 のときは、ただ単に を実行すればよい。
この記事が詳しいので興味あれば参照のこと。
私は自作のceil
関数を利用した。
コード
#include <bits/stdc++.h> using namespace std; ll ceil(ll a, ll b) { if (a % b == 0) return a / b; return (a / b) + 1; } // ======================================== // int main() { ll X; cin >> X; if (X > 0) cout << ceil(X, 10) << endl; else cout << X / 10 << endl; }
実装時間: 5分以内