https://vjudge.net/problem/UVA-1647

题意:

开始有一个1,接下来每一步1变成01,0变成10

问n不之后00的个数

打表找规律

第3步之后:

如果第i步之后有x个字符,

那么第i+1步之后 的后x个字符与第i步一样

前x个字符是第i步取反

所以00得个数由三部分组成

1、上一步00的个数

2、上一步11的个数

3、当i为偶数时,前x个字符的最后一个是0,后x个字符的第一个是0,00个数+1

f[i][0]=f[i-1][0]+f[i-1][1]+!(i&1)

f[i][1]=f[i-1][0]+f[i-1][1]

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct BigInteger
{
int len;
int num[];
BigInteger() { len=; memset(num,,sizeof(num));}
BigInteger operator + (BigInteger p) const
{
BigInteger b;
b.len=max(len,p.len);
int x=max(len,p.len);
for(int i=;i<=x;i++)
{
b.num[i]+=num[i]+p.num[i];
b.num[i+]=b.num[i]/;
b.num[i]%=;
}
if(b.num[x+]) x++;
b.len=x;
return b;
}
void operator = (BigInteger p)
{
this->len=p.len;
for(int i=;i<=len;i++) this->num[i]=p.num[i];
}
void print()
{
for(int i=len;i;i--) printf("%d",num[i]);
printf("\n");
}
};
BigInteger f[][];
BigInteger e;
int main()
{
f[][].len=;
f[][].num[]=;
f[][].len=;
f[][].num[]=;
e.len=;
e.num[]=;
for(int i=;i<=;i++)
{
f[i][]=f[i-][]+f[i-][];
if(i&) f[i][]=f[i-][]+f[i-][];
else f[i][]=f[i-][]+f[i-][]+e;
}
int n;
while(scanf("%d",&n)!=EOF) f[n][].print();
}

UVA 1647 Computer Transformation的更多相关文章

  1. UVA - 1647 Computer Transformation(计算机变换)(找规律)

    题意:初始串为一个1,每一步会将每个0改成10,每个1改成01,因此1会依次变成01,1001,01101001,……输入n(n<=1000),统计n步之后得到的串中,"00" ...

  2. HDU 1041 Computer Transformation (简单大数)

    Computer Transformation http://acm.hdu.edu.cn/showproblem.php?pid=1041 Problem Description A sequenc ...

  3. Computer Transformation(规律,大数打表)

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  4. hdu_1041(Computer Transformation) 大数加法模板+找规律

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  5. (大数)Computer Transformation hdu1041

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  6. Computer Transformation(简单数学题+大数)

    H - Computer Transformation Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d &am ...

  7. UVa 1647 (递推) Computer Transformation

    题意: 有一个01串,每一步都会将所有的0变为10,将所有的1变为01,串最开始为1. 求第n步之后,00的个数 分析: 刚开始想的时候还是比较乱的,我还纠结了一下000中算是有1个00还是2个00 ...

  8. Computer Transformation(hdoj 1041)

    Problem Description A sequence consisting of one digit, the number 1 is initially written into a com ...

  9. ACM学习历程—HDU1041 Computer Transformation(递推 && 大数)

    Description A sequence consisting of one digit, the number 1 is initially written into a computer. A ...

随机推荐

  1. "Hello World!"团队第十次会议

    Scrum会议 今天是我们"Hello World!"团队第十次召开会议,博客内容是: 1.会议时间 2.会议成员 3.会议地点 4.会议内容 5.todo list 6.会议照片 ...

  2. 咱们的team1序章

    之前都参加了好多组织,这是第一次参加变成组织.首先要介绍团队名称了,为什么叫“咱们的team”呢,因为,我们需要每个人都认真的参与进来,只有每个人都十分投入地参与进来,这个team才能称之为一个tea ...

  3. CS小分队第二阶段冲刺站立会议(5月28日)

    昨日成果:昨天对我们的软件的主界面进行了思考,考虑到许多人建议我们团队添加可以自主增加软件快捷键的功能,我对这一想法的可行性和项目总体策划进行评估分析后,决定正式实施:已经完成从电脑上添加文件在我们的 ...

  4. Hash开散列 拉链法

    #include<iostream> #include<cstdio> using namespace std; const int maxn=1000007; struct ...

  5. 复利计算程序单元测试(C语言)

    对我们和复利计算程序,写单元测试. 有哪些场景? 期待的返回值 写测试程序. 运行测试. 我的复利计算程序是用C语言写的,不懂使用C语言的测试工具,所以用C语言的运行结果来反映测试结果. 测试模块(场 ...

  6. 201621123037 《Java程序设计》第7周学习总结

    作业06-接口.内部类 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 答: 思维导图: 其他-笔记: 2. 书面作业 1. ArrayList代码分析 1.1 解释Arr ...

  7. 201621123037 《Java程序设计》第4周学习总结

    #Week04-面向对象设计与继承 1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:超级父类."is-a".父类.子类.重载.继承.多态 1.2 尝 ...

  8. jdk&tomcat环境变量配置及同时运行多个tomcat方法

    一:jdk配置 安装jdk1.7.0_51,安装过程中所有选项保持默认:最后配置 JDK的环境变量: 在“我的电脑”上点右键—>“属性”—>“高级”—>“环境变量(N)”. 1.新建 ...

  9. mysql有索引和无索引的查询速度对比

    演示100万级数据有索引和无索引的情况下的查找速度:

  10. 【vim】vim常用命令

    移动: h 或 向左箭头键(←)  #光标向左移劢一个字符 j 或 下箭头键(↓)    #光标向下移劢一个字符 k 或 向上箭头键(↑)    #光标向上移劢一个字符 l 或 向右箭头键(→)    ...