☆fibonacci数列 | ||
|
当对2求余时,循环节长度为3,对4求余时,循环节长度为3*2,
对8求余时,循环节长度为3*(2的平方)即3*(2^2),对16求余时,
循环节长度为3*(2^3)......
即对2^n求余,循环节长度为3*(2^(n-1)).
所以对于32768求余,循环节长度为32768/2*3=49152,
然后就不用多说了吧~~
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
long long a[49153]={0,1,1,2,3},i,j,k;
for(i=5;i<=49153;i++)
{
a[i]=a[i-1]+a[i-2];
a[i]=a[i]%32768;
}
cin>>k;
cout<<a[k%49152]<<endl;
return 0;
}