http://acm.hdu.edu.cn/showproblem.php?pid=1715没有什么特别之处 不过因为看错题目 wa 几次了
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const int maxn = 2000;
char back[maxn];
char Fibonacci[1000][maxn];
void add(char a[],char b[],char back[])
{
int i,j,k,up,x,y,z,l;
char *c;
if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2;
c=(char *) malloc(l*sizeof(char));
i=strlen(a)-1;
j=strlen(b)-1;
k=0;up=0;
while(i>=0||j>=0)
{
if(i<0) x='0'; else x=a[i];
if(j<0) y='0'; else y=b[j];
z=x-'0'+y-'0';
if(up) z+=1;
if(z>9) {up=1;z%=10;} else up=0;
c[k++]=z+'0';
i--;j--;
}
if(up) c[k++]='1';
i=0;
c[k]='\0';
for(k-=1;k>=0;k--)
back[i++]=c[k];
back[i]='\0';
}
int main()
{
char str1[maxn],str2[maxn];
int i,n,num;
strcpy(Fibonacci[1],"1");
strcpy(Fibonacci[2],"1");
for(i = 3; i<= 1000; i ++)
{
//strcpy(str1,Fibonacci[i-1]);
//strcpy(str2,Fibonacci[i-2]);
add(Fibonacci[i-1],Fibonacci[i-2],back);
strcpy(Fibonacci[i],back);
}
scanf("%d",&n);
while(n--)
{
scanf("%d",&num);
printf("%s\n",Fibonacci[num]);
}
return 0;
}
posted on 2010-04-21 23:23
付翔 阅读(234)
评论(0) 编辑 收藏 引用 所属分类:
ACM 数据结构