输出斐波那契数列前1000个数
2008-06-12 08:57PM | Comments(9) | Category:algorithms | Tags:Algorithm
一道面试题。各位如果有更好的算法,请告诉我,谢谢。
-
#include <stdio.h>
-
#define N 1000
-
-
int x[N] = {1, 1};
-
int y[N] = {1, 1};
-
-
int compare()
-
{
-
if (x[0] - y[0] != 0)
-
return x[0] - y[0];
-
else
-
return x[x[0]] - y[y[0]];
-
}
-
-
void printn(int *a)
-
{
-
static int i = 1;
-
-
for (int j=a[0]-1; j>=1; --j)
-
{
-
}
-
-
}
-
-
void addto(int *a, int *b)
-
{
-
b[0] = (a[0] > b[0] ? a[0] : b[0]);
-
int tmp = 0;
-
-
for (int i=1; i<=b[0]; ++i)
-
{
-
tmp += a[i] + b[i];
-
b[i] = tmp % 10000;
-
tmp /= 10000;
-
}
-
-
if (tmp != 0)
-
{
-
b[0] += 1;
-
b[b[0]] = tmp;
-
}
-
}
-
-
int main()
-
{
-
for (int i=0; i<N; ++i)
-
{
-
if (compare() < 0)
-
{
-
printn(x);
-
addto(y, x);
-
}
-
else
-
{
-
printn(y);
-
addto(x, y);
-
}
-
}
-
-
return 0;
-
}