本文主要是介绍用数组法求第10亿位斐波那契数列,mod 10000,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有人在csdn网上求解一道题目:求第10亿位斐波那契数列,mod 10000,如何才能在1S内得出结果。我试了一下,在一台笔记本上运行30秒内得出答案,1S内得出结果做不到。
程序如下所示:
/*20200304, 作者:shencz2000
求第10亿位斐波那契数列,mod 10000
使用mod 10000 运算,一个数万以上的部分被该运算去掉了。
设整数 M 和 N ,M*N = 1 E 9 ,这这里设 M = 1 E 5, N = 1 E 4 。M 太多了会出错。
斐波那契数列
Array(1) = 1 , Array(2) = 1 ,
Array(n)=Array(n-1) + Array(n-2) , n >= 3.
*/
# include <iostream>
using namespace std;
int main()
{
const int M = 100000;
const int N = 10000;
int Array[M] , i, j ;
Array[M-2]=1;
Array[M-1]=1;
for (i=0; i<N; i++) {
Array[0]=Array[M-2];
Array[1]=Array[M-1];
for (j=2; j<M; j++) {
Array[j]= ((Array[j-1] + Array[j-2] ) % 10000 );
}
}
cout << "The result is " <<Array[M-1] << endl;
return 0;
}
这篇关于用数组法求第10亿位斐波那契数列,mod 10000的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!