【尤拉計劃 25】1000位斐波那契數字
阿新 • • 發佈:2022-05-08
1000位斐波那契數
描述
斐波那契數列是按如下遞迴定義的數列:
F1=1
F2=1
Fn=Fn−1+Fn−2
因此斐波那契數列的前12項分別是:
F1=1
F2=1
F3=2
F4=3
F5=5
F6=8
F7=13
F8=21
F9=34
F10=55
F11=89
F12=144
第一個包含三位數字的是第12項F12。
在斐波那契數列中,第一個包含1000位數字的是第幾項?
分析
使用高精度的方式來模擬,普通的斐波那契數列的遞推:
a=b;b=c;c=a+b;
轉換成高精度的形式即可。
#include<bits/stdc++.h> using namespace std; int a[1005],b[1005],c[1005]; int main(){ int cnt=3; a[1]=1;b[1]=1;c[1]=2; while(c[1000]==0){ //a=b memcpy(a,b,sizeof(a)); //b=c memcpy(b,c,sizeof(b)); //c=a+b memcpy(c,a,sizeof(c)); for(int i=1;i<=1000;i++){ c[i]+=b[i]; if(c[i]>=10){ c[i+1]+=c[i]/10;c[i]%=10; } } //for(int i=20;i>=1;i--)printf("%d",c[i]); //system("pause"); ++cnt; } cout<<cnt<<endl; return 0; }