ACM斐波那契数列超时

[复制链接]
查看11 | 回复1 | 2010-12-7 20:15:39 | 显示全部楼层 |阅读模式
我一共编写了两个程序,但是在学校OJ(南邮)上还是超时了,程序本身没有错,但是占用内存太大,希望个位帮我改进,如下:
1#include "stdio.h"
int main()
{

int s=0,f=1,F=0,n;

do{scanf("%d",&n);

}while(n=40);

if(n==1||n==2)

printf("1");

else

{

while(--n)

{

s=f+F;

F=f;

f=s;


}

}printf("%d",s);
return 0;
}
2,#include
long f(int n)
{

if(n==0||n==1)return n;

else return f(n-1)+f(n-2);
}
int main()
{

int n;

do{

scanf("%ld",&n);

}while(n=40);



printf("%ld\n",f(n));

return 0;
}

回复

使用道具 举报

千问 | 2010-12-7 20:15:39 | 显示全部楼层
参见《清华大学,2000年考研数据结构第二题(2)》;如果你答是的话,你就错鲹了。不过,确实,我忽视了大数乘法;lz可以用大数乘法的专用库来设计。int k,p;int tmp1=1;int tmp2=1;cin>>k>>p;for(int i=3;i<=p;i++){int tmp=tmp2;tmp2=tmp1;tmp1=tmp1+tmp;}cout<<tmp1%(pow(2,k));
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行