您的位置:首页 > 其它

poj 2506 Tiling 高精度

2011-10-26 20:29 393 查看
数列的通项式:ar[i]=ar[i-1]+2*ar[i-2];

View Code

#include <stdio.h>
#include <string.h>

int ar[255][2000];

int main()
{
int n,i,j,l,pre,len[255];
while (scanf("%d",&n)!=EOF)
{
if(n==0)
{
printf("1\n");continue;
}
memset(ar,0,sizeof(ar));
len[1]=len[2]=1;
ar[1][0]=1;
ar[2][0]=3;
for (i=3;i<=n;i++)
{
pre=0;
for(j=0;j<len[i-2];j++)
{
ar[i-2][j]*=2;
ar[i-2][j]+=pre;
pre=0;
if(ar[i-2][j]>=10)
{
pre=ar[i-2][j]/10;
ar[i-2][j]%=10;
}
}
ar[i-2][j]+=pre;
l=len[i-2];
if(ar[i-2][len[i-2]])l++;
if(l<len[i-1])l=len[i-1];
for (j=0;j<l;j++)
{
ar[i][j]+=ar[i-2][j]+ar[i-1][j];
if(ar[i][j]>=10)
{
ar[i][j+1]=ar[i][j]/10;
ar[i][j]%=10;
}
}
if(ar[i][j])len[i]=l+1;
else len[i]=l;
}
for (i=len
-1;i>=0;i--)
{
printf("%d",ar
[i]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: