您的位置:首页 > 其它

HDU 大数问题

2015-07-28 22:21 232 查看

大菲波数

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 14121 Accepted Submission(s): 4806



[align=left]Problem Description[/align]
Fibonacci数列,定义如下:

f(1)=f(2)=1

f(n)=f(n-1)+f(n-2) n>=3。

计算第n项Fibonacci数值。

[align=left]Input[/align]
输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。

[align=left]Output[/align]
输出为N行,每行为对应的f(Pi)。

[align=left]Sample Input[/align]

5
1
2
3
4
5//解题思路:这道题被OT好多次,最后看别人的思路才明白,我猜的是在OJ运行的时候是从输入到输出的时间,而且最后输入输出很聪明的避过这个问题,计算这种问题用二维数组是很好的。参考代码如下:[code]#include<stdio.h>
#include<string.h>
#define N  1004
int a[1001][1005];
int main(){int i,j;
memset(a,0,sizeof(a));
a[1][0]=1;
a[2][0]=1;
for(i=3;i<=1000;i++)
{ for(j=0;j<=N;j++)
{ a[i][j]+=a[i-1][j]+a[i-2][j];
if(a[i][j]>=10)
{ a[i][j]%=10;
a[i][j+1]++;
}
}
}

int s,n;
scanf("%d",&s);
while(s--)
{
scanf("%d",&n);
if(n==1||n==2)
{printf("1\n");
continue;
}
if(n>=3)
{
for(i=N;i>=0&&a
[i]==0;i--);
for(;i>=0;i--)
printf("%d",a
[i]);
printf("\n");

}

}

return 0;
}
</pre></div>[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: