高精度加法之二
Time Limit: 1 Sec Memory Limit: 128 MB
Description
菲波拉契数列大家都知道了。
f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2)
现在希望你求这个数列第N列
f(1) = 1, f(2) = 1, f(n > 2) = f(n - 1) + f(n - 2)
现在希望你求这个数列第N列
Input
一个数N,N<=5000
Output
如题
Sample Input
100
Sample Output
354224848179261915075
HINT
Source
#include<iostream> void Add(int *a,int *b,int *c) //十进制加法 { for(int i=9999;i>=0;i--) { c[i]+=a[i]+b[i]; if(c[i]>=10) {c[i-1]++;c[i]-=10;} } } void Cpy_num(int *a,int *b) //数组复制 { for(int i=0;i<10000;i++) {a[i]=b[i];} } void Fibnocci(int n,int *F) { int f1[10000]={0},f2[10000]={0},t[10000]={0}; f1[9999]=f2[9999]=1; if(n<=2) {F[9999]=1;return;} for(int i=3;i<=n;i++) { Cpy_num(F,t); //仿照普通计算即可 Add(f1,f2,F); Cpy_num(f1,f2); Cpy_num(f2,F); } } using namespace std; main() { int F[10000]={0}; int i,j,n; scanf("%d",&n); Fibnocci(n,F); for(j=0;j<10000;j++) //去前导零 { if(F[j]!=0) {break;} } for(i=j;i<10000;i++) {printf("%d",F[i]);} }
转载请注明出处,谢谢.Q_Q

浙公网安备 33010602011771号