首先证明,对任意正整数 n 都有 f(n)=2n。因为 f(1)=2,且由题目条件可得
f(n+1)=f(n)f(1)=2f(n)
所以根据数学归纳法,结论成立。
每个询问要求计算 2nimodM,其中 M=。由于 是质数并且与 互质,费马小定理表明
2M−1≡1(modM)
因此,设 ei 为 ni 对 M−1 取模的结果,则
2ni≡2e
由于 ni 可达到 10200,应将其作为十进制字符串读入。设从左到右的数位为 d。令初值 ,依次更新
e←(10e+dj)mod(M−
最后通过二进制快速幂计算 2emodM。
设第 i 个询问的十进制位数为 Li,总时间复杂度为 O(∑i=。除输入字符串外,额外空间复杂度为 。输入数字最长有 位。
Solution written by GPT6