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 ;
}
#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 ;
}