ABC106 C - To Infinity
備忘録
問題
回答
import sys import os ii = lambda: int(sys.stdin.buffer.readline().rstrip()) il = lambda: list(map(int, sys.stdin.buffer.readline().split())) fl = lambda: list(map(float, sys.stdin.buffer.readline().split())) iln = lambda n: [int(sys.stdin.buffer.readline().rstrip()) for _ in range(n)] iss = lambda: sys.stdin.buffer.readline().decode().rstrip() sl = lambda: list(map(str, sys.stdin.buffer.readline().decode().split())) isn = lambda n: [sys.stdin.buffer.readline().decode().rstrip() for _ in range(n)] MOD = 10 ** 9 + 7 def main(): if os.getenv("LOCAL"): sys.stdin = open("input.txt", "r") S = list(map(int, iss())) K = ii() for k in range(K): if S[k] != 1: print(S[k]) exit() else: print(1) if __name__ == '__main__': main()
考え方
実際に5000兆日後、生成される文字列S
をシミュレートするのは不可能なので、
文字列が変化する条件からK
文字目が何になるのか推測した。
1
は1
のまま変化することはなく、残り続ける。
そのため、文字列S
のK
文字目まで1
の場合には、回答はかならず1
。
1
以外の数字N
は5000兆日後、N^5000兆
となり、果てしなく大きくなる(K
番目を上回る)。
以上のことから、文字列S
のうち、K
文字目までが全て1の場合1
が回答となり、
K
文字目までに1
以外の数字N
が存在している場合、数字N
が回答となる。