hdu 1041 Computer Transformation(大数递推)
2014-10-15 18:59
253 查看
//hdu 1041 Computer Transformation(大数递推) /* 题意:给你一个序列 1; step1之后序列变:01 step2之后序列变:1001 step3之后序列变:01101001 。。。。。 求:讲过n个step之后:有几个连续2为0的数 解题: 经分析:递推(dp[][0]为几个连续2为0的数,dp[][1]为几个连续2为1的数,) n为奇数时: dp [0]=dp[n-1][1]+dp[n-1][0]; dp [1]=dp[n-1][1]+dp[n-1][0]; n为偶数时: dp [0]=dp[n-1][1]+dp[n-1][0]+1; dp [1]=dp[n-1][1]+dp[n-1][0]; (注意的是要大数) */ #include<iostream> #include<cstdio> using namespace std; const int N=1010; struct node { int num[500]; int len; node(){len=0;} }dp [2]; node operator +(node a,node b)//两个大数相加; { node sum; int len1=a.len<b.len?a.len:b.len; sum.len=a.len>b.len?a.len:b.len; int w,v=0; for(int i=0;i<len1;i++) { w=a.num[i]+b.num[i]+v; sum.num[i]=w%10; v=w/10; } for(int i=len1;i<a.len;i++) { w=a.num[i]+v; sum.num[i]=w%10; v=w/10; } for(int i=len1;i<b.len;i++) { w=b.num[i]+v; sum.num[i]=w%10; v=w/10; } if(v!=0) { sum.num[sum.len]=v; sum.len++; } return sum; } void init()//递推枚举1到1000 { dp[0][0].num[0]=0; dp[0][1].num[0]=0; dp[0][0].len=1; dp[0][1].len=1; node temp; temp.num[0]=1; temp.len=1; for(int i=1;i<=1000;i++) { if(i%2==1) { dp[i][0]=dp[i-1][0]+dp[i-1][1]; dp[i][1]=dp[i-1][0]+dp[i-1][1]; } else { dp[i][0]=dp[i-1][0]+dp[i-1][1]+temp; dp[i][1]=dp[i-1][0]+dp[i-1][1]; } } } void print(int j)//输出一个大数 { for(int i=dp[j][0].len-1;i>=0;i--) { printf("%d",dp[j][0].num[i]); } printf("\n"); } int main() { init(); int n; while(scanf("%d",&n)!=EOF) { print(n); } return 0; }
相关文章推荐
- HDU 1041 Computer Transformation 大数递推
- HDU 1041 递推 大数
- HDU 1041 递推 + 大数模板
- hdu 1041(递推,大数)
- HDU 1041 Computer Transformation (简单大数)
- HDU-1041 Computer Transformation 大数
- hdu_1041(Computer Transformation) 大数加法模板+找规律
- hdu 1041 打表:递推+大数 模板
- HDU-3723 Delta Wave(卡特兰数+大数递推)
- HDU-1041-Computer Transformation,大数递推,水过~~
- hdu 1041(规律+打表+java大数)
- hdu 1865 1sting (java大数&递推)
- HDU-1041大数运算+递归
- HDU 1041(递推+大数)
- hdu 1297 Children’s Queue 递推 大数
- hdu 1041 Computer Transformation(规律+大数)
- hdu 1297 Children’s Queue (大数加法+递推)
- HDU-1041-Computer Transformation(规律题 && 大数题)
- hdu1041 Computer Transformation 大数找规律
- HDU 1316 How Many Fibs?(递推,大数相加)