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[10001];BigInteger() { len=0; memset(num,0,sizeof(num));}BigInteger operator + (BigInteger p) const{BigInteger b;b.len=max(len,p.len);int x=max(len,p.len);for(int i=1;i<=x;i++){b.num[i]+=num[i]+p.num[i];b.num[i+1]=b.num[i]/10;b.num[i]%=10;}if(b.num[x+1]) x++;b.len=x;return b;}void operator = (BigInteger p) {this->len=p.len;for(int i=1;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[1001][2];
BigInteger e;
int main()
{f[1][0].len=1;f[1][0].num[1]=0;f[2][0].len=1;f[2][0].num[1]=1;e.len=1; e.num[1]=1;for(int i=3;i<=1000;i++) {f[i][1]=f[i-1][0]+f[i-1][1];if(i&1)  f[i][0]=f[i-1][0]+f[i-1][1];else f[i][0]=f[i-1][0]+f[i-1][1]+e;}int n;while(scanf("%d",&n)!=EOF) f[n][0].print();
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/7412706.html

UVA 1647 Computer Transformation相关推荐

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

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

  2. UVa 1647 - Computer Transformation

    题目:初始给你一个1,然后每一次1变成01,0变成10求变化n步后,有多少个00. 分析:数学题.我们观察变化. 00 -> 1010 出现 10.01 01 -> 1001 出现 10. ...

  3. Computer Transformation UVA - 1647

    可以发现00经过两次变换会继续产生00,1经过两次变换也会产生00,所以就有相应的递推关系的出现,每次的1的个数均为上次的1的个数的两倍,其他的编程实现即可,具体代码如下: #include<i ...

  4. uva 1647(规律)

    O(n)=O(n-2)+2^(n-3),大数高精度 import java.util.*; import java.math.*; public class Main {static BigInteg ...

  5. UVa1647 Computer Transformation

    题意:初始串为1,每一步会将所有0变为10,所有1变为01.如1-01-1001-01101001.统计n步之后的串中,00这样连续两个0出现了多少次. 思路:找规律.首先,不会出现连续3个0.然后观 ...

  6. uva计算机水平,UVa的Computer Science「弗吉尼亚大学计算机科学系」

    弗吉尼亚大学计算机科学系研究生阶段开设有以下学位项目,分别是: 计算机科学博士:为期4-7年(视论文完成情况),要求申请者本科毕业,不限专业背景,但须拥有很强的计算机科学相关背景,修读过下文所述前置课 ...

  7. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  8. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

  9. HDOJ题目分类大全

    版权声明:本文为博主原创文章,欢迎转载,转载请注明本文链接! https://blog.csdn.net/qq_38238041/article/details/78178043 杭电里面有很多题目, ...

最新文章

  1. 全面感知通用目标:建模、分割和重建(CVPR2021)
  2. pandas笔记(pandas Data Structures)
  3. C语言头文件避免重复包含
  4. HDU 4879 ZCC loves march (并查集,set,map)
  5. 深入理解C++ 虚函数表
  6. SpringBoot2 集成日志,复杂业务下的自定义实现
  7. Visual Studio 2008带来了什么
  8. Activity之间的数据传递—实现Parcelable接口
  9. 如何开启深度学习之旅?这三大类125篇论文为你导航(附资源下载)
  10. Powershell进阶学习(1) 浅谈Powershell学习方法
  11. mt2503 用Dct tool打开codegen.dws提示版本 不match
  12. mysql 百万级数据库优化方案
  13. 前端js生成条形码和EAN商品码(69码)
  14. STL源码剖析学习之increment、decrement、dereference实现源码
  15. mysql point 经纬度_lbs - Mysql POINT类型数据,怎么计算经纬度偏差
  16. js的window.print打印页面 不打印网页中的“打印”按钮
  17. jooq从入门到精通(一)
  18. 微信小程序基于udp协议与esp8266进行通信
  19. 关于IPHONE4跑流量问题解决方法:
  20. 配置SD卡ext文件系统启动

热门文章

  1. GLUT之鼠标事件两点画线 4
  2. 啊哈添柴挑战Java1829. 逆序输出(难)
  3. 作业帮发布新品学习机,首创“AI老师一对一”模式
  4. 肠道微生物:治疗功能性消化不良的新途径
  5. Java 基础知识总结—HashMap
  6. 什么样的自学Java网站才适合学习者?
  7. 备战面试日记(3.2) - (设计模式.23种设计模式之创建型模式)
  8. 微信官方小程序「公众号数据助手」终于来啦
  9. 算法实践-遗传算法GA
  10. 20172319 《程序设计与数据结构》第11周学习总结