【AtCoder参加記録】AtCoder Beginner Contest 234【ABCD4完】

f:id:itsy68:20220110043002p:plain

E問題
https://atcoder.jp/contests/abc234/tasks/abc234_e
に35分ほどかけましたが解けませんでした。
入力Xの一つ一つの桁の数を増やしたりして等差数に近づけようとしていました。

解説
https://atcoder.jp/contests/abc234/editorial/3225
にあるように等差数を全列挙するという発想がなかったので勉強になりました。
以下は解説のコードを参考にpythonで実装したものです。

import bisect
X = int(input())
res = []
for fir in range(1, 10):
    for d in range(-9, 9):
        s = ""
        dg = fir
        for i in range(18):
            s += str(dg)
            res.append(int(s))
            dg += d
            if not (0 <= dg <= 9):
                break
res = sorted(res)
ans_i = bisect.bisect_left(res, X)
ans = res[ans_i]
print(ans)