任意の正の整数 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−
と更新する。最後に二分累乗法で 2emodM を計算する。
i 番目の質問の桁数を Li とすると、全体の時間計算量は O(∑i= である。入力文字列以外の追加空間は であり、文字列の最大長は である。
Solution written by GPT6