斐波那契函数 不过因为有1000个数据 所以要用大数
#include <cstring> #include <cstdio> #define N 1000 char s[1002][N]; void ans(int *a, int *b) { for(int i=0; i<N; ++i) a[i]=b[i]; } void _ans(char *s, int *a) { int k=N-1; int j=0; for(; k>=0; --k) if(a[k]) break; for(int i=k; i>=0; --i) s[j++]=a[i]+'0'; } void solve() { int a[N]; int b[N]; int c[N]; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); memset(c, 0, sizeof(c)); memset(s, 0, sizeof(s)); a[0]=1; b[0]=2; s[0][0]='1'; s[1][0]='2'; for(int i=2; i<1001; ++i) { int m=0; for(int j=0; j<N; ++j) { c[j]=a[j]+b[j]+m; m=c[j]/10; c[j]=c[j]%10; } _ans(s[i],c); ans(a,b); ans(b,c); } } int main() { solve(); int n; while(scanf("%d",&n)==1) { printf("%s\n",s[n]); } return 0; }