Official
C - Doubled Editorial by tatyam
\(N < 10^{12}\) という制約なので、\(1\) 以上 \(N\) 以下の全ての整数について、繰り返しになっているか判定すると TLE になってしまいます。
しかし、繰り返される整数の側は高々 \(6\) 桁であるため、繰り返される整数を全探索することができます。
時間計算量は \(O(\sqrt N)\) です。
その他、繰り返される整数を二分探索すれば \(O(\log N)\) で、二分探索せずとも \(O(1)\) で求めることができます。
回答例 (C++)
#include <iostream>
#include <string>
using namespace std;
using ll = long long;
int main(){
ll N;
cin >> N;
for(ll i = 1; ; i++) if(stoll(to_string(i) + to_string(i)) > N){
cout << i - 1 << endl;
return 0;
}
}
回答例 (Python)
N = int(input())
for i in range(1, 1000001):
if int(str(i) * 2) > N:
print(i - 1)
exit()
posted:
last update: