回答
Submission #418326 - CODE FESTIVAL 2014 決勝(オープン) | AtCoder
例えば,f(23) = 2 * 23 + 3 = 46 となるので,A=46のときに,k=23として,kを出力しなさいという問題.条件を満たすkがなければ,-1を出力.
この時,kは10以上であるので,A<10ならば,即-1を出力して終わり(そこに最初気付かなかった)
愚直にf(k)を計算しても,最大でkは10000にしかならないので,普通に間に合うはず(事実間に合っている)
f(k)をどう求めるかだけが少し難しかったかな.あとはただのループ処理なので!
def calc(num): numli = list(map(int, list(str(num)))) numli = numli[::-1] res = 0 for i in range(0, len(numli)): res += numli[i] * (num ** i) return res A = int(input()) if A < 10: print(-1) exit(0) res = 1 while True: c = calc(res) if A == c: print(res) break elif c > A: print("-1") break res += 1