poj 2506-递推+高精度
2012-05-21 23:49
239 查看
刚开始一直re,高精度的时候要注意,f
=f[n-1]+2*f[n-2];数组要开到350才够
View Code
=f[n-1]+2*f[n-2];数组要开到350才够
View Code
#include<stdio.h> #include<string.h> #define max(x,y) x>y?x:y char s[350][105]={"1","1"}; int t1[105]; void add(int n1,int n2) { int len1=strlen(s[n1]); int len2=strlen(s[n2]); int lenmax=max(len1,len2); t1[0]=0; t1[1]=0; int i,j,k; lenmax++; for(i=len1-1,j=len2-1,k=lenmax;i>=0&&j>=0;i--,j--,k--) t1[k]=s[n1][i]-'0'+2*(s[n2][j]-'0'); if(j<0) { while(i>=0) { t1[k]=s[n1][i]-'0'; i--; k--; } } for(k=lenmax;k>=1;k--) { t1[k-1]+=(t1[k]/10); t1[k]%=10; } if(t1[0]) { for(i=0;i<=lenmax;i++) s[n1+1][i]=t1[i]+'0'; s[n1+1][lenmax+1]='\0'; } else { if(t1[1]) { for(i=1;i<=lenmax;i++) s[n1+1][i-1]=t1[i]+'0'; s[n1+1][lenmax]='\0'; } else if(t1[2]) { for(i=2;i<=lenmax;i++) s[n1+1][i-2]=t1[i]+'0'; s[n1+1][lenmax-1]='\0'; } } } int main() { int n; int i,j,k; for(i=1;i<=340;i++) add(i,i-1); while(scanf("%d",&n)!=EOF) { printf("%s\n",s ); } return 0; }
相关文章推荐
- POJ - 2506 Tiling (递推+高精度运算)@
- POJ 2506 Tiling (递推+高精度)
- POJ2506——Tiling(高精度+递推)
- poj 2506 Tiling(数学:递推+高精度)
- Poj 2506 Tiling (Java高精度 + 递推)
- POJ 2506 高精度+递推
- POJ2506 高精度+递推
- 【POJ】2506 - Tiling(递推,高精度)
- POJ 2506 Tiling(高精度+递推)
- POJ 2506 高精度+递推+记忆化搜索
- POJ 2506 Tiling (大数+递推)
- poj 2506 Tiling【大数+递推】
- poj 2506 Tiling dp 递推
- poj 2506 Tiling(递推 大数)
- poj 2506 递推+Java大数
- poj 2506 Tiling——递推和大数模拟
- poj 2506 Tiling 高精度
- Tiling(POJ 2506 高精度)
- [POJ](2506)Tiling ---递推+Java大数
- poj 2506 Tiling 《大数加法+递推》