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. scrum立会报告+燃尽图(第三周第二次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://coding.net/u/wuyy694 ...

  2. c# 修改exe.config文件并且及时更新

    1.config文件地址:AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 注意:如果是在调试程序中运行,此地址指代的是vhost. ...

  3. ARP 攻击

    场景 A攻击者 192.168.1.3 00:00:00:00:00:01 B受害者 192.168.1.2 00:00:00:00:00:02 C路由器 192.168.1.1 00:00:00:0 ...

  4. 01.1 Windows环境下JDK安装与环境变量配置详细的图文教程

    01.1 Windows环境下JDK安装与环境变量配置详细的图文教程 本节内容:JDK安装与环境变量配置 以下是详细步骤 一.准备工具: 1.JDK JDK 可以到官网下载 http://www.or ...

  5. 在原有的基础之上,启用NAT模型

    # 给虚拟主机实例添加一个网关 route add default gw 192.168.23.1   # 在宿主机打开网卡间转发功能 echo 1 > /proc/sys/net/ipv4/i ...

  6. jQuery之过滤选择器

    在原有选择器匹配的元素中进一步进行过滤的选择器 * 基本 * 内容 * 可见性 * 属性 需求 1. 选择第一个div 2. 选择最后一个class为box的元素 3. 选择所有class属性不为bo ...

  7. freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)

    exists:由空值测试运算符的引入,它被废弃了. exp1?exists 和 exp1??是一样的, ( exp1)?exists 和(exp1)??也是一样的. if_exists:由默认值运算符 ...

  8. Python——cmd调用(os.system阻塞处理)(多条命令执行)

    os.system(返回值为0,1,2)方法 0:成功 1:失败 2:错误 os.system默认阻塞当前程序执行,在cmd命令前加入start可不阻塞当前程序执行. 例如: import os os ...

  9. 新手必备!11个强大的 Visual Studio 调试技巧

    简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...

  10. 第156天:canvas(三)

    一.变形 1.1 translate translate(x, y) ​ 用来移动 canvas 的原点到指定的位置 ​ translate方法接受两个参数.x 是左右偏移量,y 是上下偏移量,如右图 ...