您的位置:首页 > 其它

Fibonacci数列

2009-08-13 12:47 218 查看
Fibonacci数列

Time Limit:1sMemory limit:32M
Accepted Submit:746Total Submit:2937
1202年,意大利数学家斐波那契出版了他的《算盘全书》,在书中第一次提到了著名的Fibonacci数列,定义如下:



现在你的任务是求出Fibonacci数列的第n项。
输入输出格式

输入数据由多组数据组成。每组数据一行,仅一个整数,表示n的值。

对于每组数据,输出仅一行,即Fibonacci数列的第n项。

我们保证输出的结果不会超过1000位数。
样例输入

20

样例输出

6765

Original: FZUPC 2005

http://acm.fzu.edu.cn/problem.php?pid=1060

#include <stdio.h>
void add(char inx[1000],char iny[1000])
{
int temp=0;
int i;
for(i=0;i<1000;i++)
{
if(inx[i]+iny[i]+temp-'0'<58)
{
inx[i]=inx[i]+iny[i]+temp-'0';
temp=0;
}
else
{
inx[i]=inx[i]+iny[i]+temp-10-'0';
temp=1;
}
}
}
void cprint(char in[1000])
{
int i;
int p=999;
for(i=999;i>=0;i--)
if(in[i]!='0')
{
p=i;
break;
}
while(p>=0){
printf("%c",in[p]);
p--;
}
printf("/n");
}
void main()
{
int i,j,n;
char inx[1000],iny[1000];
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<1000;i++)
{
inx[i]='0';
iny[i]='0';
}
inx[0]=iny[0]='1';
if(n==3)
printf("2/n");
else if(n%2==0)
{
for(j=3;j<=n;j+=2)
{
add(inx,iny);
add(iny,inx);
}
cprint(iny);
}
else
{
for(j=3;j<=n;j+=2)
{
add(inx,iny);
add(iny,inx);
}
cprint(inx);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: