首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

大斐波那契据数取余

2012-09-02 
大斐波那契数取余From Admin☆描述 Description著名的斐波那契数列f[n]1      n1,2   f[n-1]f[n-2]n2现

大斐波那契数取余
From Admin☆      描述 Description  著名的斐波那契数列
f[n]=1         n=1,2
   f[n-1]+f[n-2]   n>2
现在求第n项,由于f[n]可能很大,你只需要输出mod 32768的值即可。       输入格式 Input Format  仅有一行,为n,1<=n<=maxlongint       输出格式 Output Format  仅有一个数字,即答案       样例输入 Sample Input [复制数据]     

 

 

 

 

样例输出 Sample Output [复制数据]

 

 

 

 

/*由于题目是对32768求余,即2的15次方,可以找出循环节规律,当对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 a[50005];int main(){long long n,i;a[1]=a[2]=1;for(i=3;i<=50000;i++){  a[i]=a[i-1]+a[i-2];   if(a[i]>=32768) a[i]%=32768;}cin>>n;cout<<a[n%49152]<<endl;return 0;}


 

 

热点排行