【HUSTOJ】1114: 高精度加法之二

来源:互联网 发布:淘宝没发票可以投诉吗 编辑:程序博客网 时间:2024/06/01 09:16

1114: 高精度加法之二

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 47  Solved: 15

原题链接

Description

菲波拉契数列大家都知道了。
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]);}}





0 0
原创粉丝点击