#include<iostream> using namespace std; const int RADIX=10,M=1003;//RADIX表示进制 void add(int*a,int* b)//两个大整数求和,和保存在数组a中 { int i,carry=0;//carry表示进位
for(i=0;i<M+1;i++) { a[i]=a[i]+b[i] +carry; carry=a[i]/RADIX; a[i]=a[i]%rADIX; } } int main() { int *a=new int[M]; int *b=new int[M]; int *temp=new int[M]; int i,n; while(cin>>n) { a[0]=1; b[0]=1; for(i=1;i<M;i++) a[i]=b[i]=0; for(i=3;i<=n;i++) { add(a,b); temp=a; a=b; b=temp; } int k=M-1;//过滤前面的0 while(b[k]==0) {k--;} if(k<0) cout<<0; else { for(;k>=0;k--) { cout<<b[k]; } } cout<<endl; } return 0; }
原文网址:http://www.cnblogs.com/xuzhichuang/archive/2010/08/24/1807625.html
题目:HUNNU OJ 10408 , ZOJ 1828
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。