レーティングネタ問題!
問題概要
1 以上 299 以下の整数 が与えられる。
よりも大きい最小の 100 の倍数から を引いた値を求めよ。
解法 (1):場合分けして解く
場合分けして考えてしまうのが確実かもしれない。
- のとき: より大きい最小の 100 の倍数は 100 なので、答えは
- のとき: より大きい最小の 100 の倍数は 200 なので、答えは
- のとき: より大きい最小の 100 の倍数は 300 なので、答えは
コード
#include <bits/stdc++.h> using namespace std; int main() { int R; cin >> R; if (R <= 99) cout << 100 - R << endl; else if (R <= 199) cout << 200 - R << endl; else cout << 300 - R << endl; }
解法 (2):数学的に解く
を 100 で割った余りを としよう。
このとき、 より大きい最小の 100 の倍数は、 に だけ足したものであることがわかる。
よって、答えは である。
コード
#include <bits/stdc++.h> using namespace std; int main() { int R; cin >> R; cout << 100 - R % 100 << endl; }