먼저 자연수 n에 대하여 f(n)=2n임을 보인다. f(1)=2이고, 함수의 조건에 의해
f(n+1)=f(n)f(1)=2f(n)
이므로 수학적 귀납법으로 성립한다.
따라서 각 질의의 답은 2nimodM이며, 여기서 M=이다. 은 소수이고 와 서로소이므로 페르마의 소정리에 따라
2M−1≡1(modM)
이다. 따라서 ni를 M−1=109+6으로 나눈 나머지 만 알면
2ni≡2e
이다.
ni는 최대 10200이므로 일반적인 정수형으로 읽지 않는다. 십진수 문자열의 자릿수를 왼쪽부터 d라고 할 때, 나머지는 다음 갱신으로 계산할 수 있다.
e←(10e+dj)mod(M−
처음에는 e=0으로 둔다. 마지막으로 이진 거듭제곱으로 2emodM을 구한다.
Q개 질의의 자릿수 길이를 각각 Li라고 하면 전체 시간 복잡도는 O(∑i=이고, 문자열 저장을 제외한 추가 공간은 이다. 입력 문자열 최대 길이는 이다.
Solution written by GPT6