题意:输入两个非负整数a、b和正整数n(a,b>=0&&a,b<2^64,n>=1&&n<=1000),你的任务是计算f(a^b)除以n的余数。其中f(0)=f(1),且对于所有非负整数i,f(i+2)=f(i+1)+f(i)
解题思路:设F(i)=f(i) mod n。不难发现当(F(i),F(i+1))重复出现时,整个序列就开始重复。所以我们需要找到对于不同的n重复周期,因为余数有n中,所以最多n^2项就会出现重复(其实我们也可以通过打表观察,在n<=1000时大多数数据基本上用不到n^2).然后只需计算出F(0)~F(n^2)即可。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-15 04:35:12