探索してしまうのが楽だと思われる。
問題概要
整数値 が与えられる。
以上の整数のうち、最小のゾロ目の数を答えよ。
制約
考えたこと
基本的には、次の方針がとれそうだ。
の順に探索し、最初に がゾロ目である瞬間を捉えて、 を出力する。
ここで、「 がゾロ目であるかどうか」を判定する方法として、1 つには「 を文字列に変換して、すべて同じ文字で構成されているかを調べる」という方法がある。
しかし、 という制約を活用すると、もっと楽ができる。
まず、999 という整数がゾロ目であることに注意しよう。999 がゾロ目なので、答えは 999 以下であることが保証される。さらに という制約から、答えは 111 以上であることも保証される。よって、 以上の最小のゾロ目の整数は のいずれかとなる。このことを活用して問題が解ける。
逆にゾロ目の数であって、 以上である最小の数を求める
上記のことから、方針変換して、次の方法がとれる。
のうち、 以上である最小の整数を答える
コード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int res = 111; while (res < N) res += 111; cout << res << endl; }