\(x\) 以上の最小の等差数を求めるのであるが, まず候補の範囲を考える. \(99\cdots9\) は等差数なので, \(x\) と同じ桁数だけで十分.
よって全探索できる. 先頭から決めて行けば良い. 小さい等差数から調べていく.
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
ll x; cin >> x;
ll dx = 0;
ll cx = x; // 後で x を使うのでコピーする
while(cx) {
dx++;
cx /= 10;
}
srep(a,1,10){
srep(e,-9, 10){
bool f = true;
ll y = 0;
ll c = a;
rep(i,dx){
if(!in(c,10LL)) f = false;
y = 10*y + c;
c += e;
}
if(f && y >= x) {
cout << y << endl;
return 0;
}
}
}
assert(false);
return 0;
}