HDU_1715 大菲波数(高精度)

我用的高精度加法模拟的,不过看到好多人0MS过了,肯定有更好的方法。AC代码先放这,回头再想。。。(据统计F(1000)是208位,开数组时注意。。。。)

#include <iostream>
#include
<cstdio>
#include
<cstring>
using namespace std;
const int N = 1007;
int f[N][217];
int main()
{
int i, j;
f[
1][0] = f[2][0] = 1;
for(i = 3; i < N; i++)
{
for(j = 0; j <= 210; j++)
f[i][j]
= f[i-1][j]+f[i-2][j];
int flag = 0;
for(j = 0; j <= 210; j++)
{
int tmp = f[i][j] + flag;
flag
= tmp/10;
f[i][j]
= tmp%10;
}
}
//freopen("data.in", "r", stdin);
int n, pi;
cin
>> n;
while(n--)
{
cin
>> pi;
i
= 210;
while(f[pi][i] == 0)
i
--;
for(;i >= 0; i--)
printf(
"%d", f[pi][i]);
printf(
"\n");
}
return 0;
}
posted @ 2011-08-17 21:07  AC_Von  阅读(263)  评论(0编辑  收藏  举报