/*
这难道说是传说中的坑D题么??
让输入多组数据一点提示都不给
难怪测试数据正确却一直WA
先是怀疑N定义的不够大
后来又怀疑memset()和memcpy()数据太大可能不支持
最后发现竟然是。。。
哎,不说了
上代码
以后引以为鉴
其实即使是单组数据
按多组数据来处理也是可以的
所以以后都按多组数据处理
保险!
*/
#define LOCAL
#include<iostream>
#include<cstring>
#define N 1001
using namespace std;
int main()
{
#ifdef LOCAL
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
int sum[N],a[N],b[N],n,i,j,t;
while(cin>>n)
{
if(n<=2)
{cout<<1<<endl;continue;}
n-=2;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(sum,0,sizeof(sum));
a[0]=b[0]=1;
while(n--)
{
for(i=0;i<N;i++)
sum[i]=a[i]+b[i];
for(i=0;i<N;i++)
{
t=sum[i]/10;
sum[i]=sum[i]%10;
sum[i+1]+=t;
}
memcpy(a,b,sizeof(int)*N);
memcpy(b,sum,sizeof(int)*N);
}
i=N-1;
while(!sum[i]) i--;
for(;i>=0;i--)
cout<<sum[i];
cout<<endl;
}
return 0;
}
zoj 1828 Fibonacci Numbers
最新推荐文章于 2021-08-04 15:15:41 发布