题意:给一个初始值1,每步操作将1替换为01,将0替换为10。问N步操作后有多少对连续的0。

解法:f[i]表示第i步后的答案。可以直接打表发现规律——奇数步后,f[i]=f[i-1]*2-1;偶数步后,f[i]=f[i-1]*2+1;
至于原因——我只能简单说一点。第i步后的答案可由i-1步后的“01”+“1”+“0”的个数推出,而“01”*2+“1”+“0”=01串的总个数。用x表示i-1步后的“01”的个数,则f[i]=x+(2^(i-1)-x*2);但这样复杂度挺高,我也不知道怎么优化了。

noi oj上的实际数据没有1000这么大,在65以内,用long long也可以过。

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 1010
7
8 int n;
9 long long f[N];
10
11 int main()
12 {
13 f[1]=0;
14 for (int i=2;i<=N;i++)
15 {
16 if (i%2) f[i]=f[i-1]*2-1;
17 else f[i]=f[i-1]*2+1;
18 }
19 while(~scanf("%d",&n)) printf("%lld\n",f[n]);
20 return 0;
21 }

无高精度

我高精度的不知为何在noi oj上AC,在poj上WA。若有大牛能纠正我,请多多指教~

 1 #include<cstdio>
2 #include<cstdlib>
3 #include<cstring>
4 #include<iostream>
5 using namespace std;
6 #define N 1000
7
8 struct node
9 {
10 int s[210];
11 int l;
12 node() {l=0;memset(s,0,sizeof(s));}
13 };
14 node f[N+10];
15
16 node operator*(node x,int y)//不可省掉构成运算符左右的整型
17 {
18 node z;
19 z.l=x.l;
20 for (int i=1;i<=z.l;i++)
21 {
22 z.s[i]+=x.s[i]*2;
23 if (z.s[i]>9) z.s[i+1]+=z.s[i]/10,z.s[i]%=10;
24 }
25 while (z.s[z.l+1]) z.l++;
26 return z;
27 }
28 node operator-(node x,int y)
29 {
30 node z=x;
31 int t=1;
32 z.s[t]--;
33 while (z.s[t]<0) z.s[t]+=10,z.s[++t]--;
34 while (!z.s[z.l]) z.l--;
35 return z;
36 }
37 node operator+(node x,int y)
38 {
39 node z=x;
40 int t=1;
41 z.s[t]++;
42 while (z.s[t]>9) z.s[t+1]+=z.s[t]/10,z.s[t++]%=10;
43 while (z.s[z.l+1]) z.l++;
44 return z;
45 }
46 void print(node x)
47 {
48 for (int i=x.l;i>=1;i--)
49 printf("%d",x.s[i]);
50 printf("\n");
51 }
52 int main()
53 {
54 freopen("a.in","r",stdin);
55 freopen("a.out","w",stdout);
56 f[1].l=1,f[1].s[1]=0;
57 for (int i=2;i<=N;i++)
58 {
59 if (i%2) f[i]=f[i-1]*2-1;
60 else f[i]=f[i-1]*2+1;
61 }
62 int n;
63 while(~scanf("%d",&n)) print(f[n]);
64 return 0;
65 }

高精度+重载运算符

P.S.重载运算符 不可省掉构成运算符左右的2个类型,例如:整型。

【noi 2.6_9290】&【poj 2680】Computer Transformation(DP+高精度+重载运算符)的更多相关文章

  1. 【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)

    题意:定义一棵树的所有非叶节点都恰好有n个儿子为严格n元树.问深度为d的严格n元树数目. 解法:f[i]表示深度为<=i的严格n元树数目.f[i]-f[i-1]表示深度为i的严格n元树数目.f[ ...

  2. HOJ 2148&POJ 2680(DP递推,加大数运算)

    Computer Transformation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4561 Accepted: 17 ...

  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 http://acm.hdu.edu.cn/showproblem.php?pid=1041 Problem Description A sequenc ...

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

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

  6. (大数)Computer Transformation hdu1041

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

  7. POJ.3624 Charm Bracelet(DP 01背包)

    POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> # ...

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

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

  9. POJ 2995 Brackets 区间DP

    POJ 2995 Brackets 区间DP 题意 大意:给你一个字符串,询问这个字符串满足要求的有多少,()和[]都是一个匹配.需要注意的是这里的匹配规则. 解题思路 区间DP,开始自己没想到是区间 ...

随机推荐

  1. leetcode-242有效字母异位词

    题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&quo ...

  2. 3.利用jmeter制作性能脚本

        jmeter录制脚本示例   jmeter手工脚本编写与调试   业务逻辑实现之逻辑控制器   业务脚本参数化实现   jmeter处理cookie   beanshell脚本   ...

  3. Python绘制雷达图(俗称六芒星)

    原文链接:https://blog.csdn.net/Just_youHG/article/details/83904618 背景 <Python数据分析与挖掘实战> 案例2–航空公司客户 ...

  4. zabbix客户端安装配置

    1.下载,解压并安装zabbixtar zxvf zabbix-2.0.12.tar.gzcd zabbix-2.0.12./configure --prefix=/usr/local/zabbix ...

  5. g/test/s/lose/won/g

    包含字符串test的任意行商,用lose代替won

  6. Linux Shell 编程基础详解——吐血整理,墙裂推荐!

    第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...

  7. powershell中的cmdlet命令

    Add-Computer 向域或工作组中添加计算机. Add-Content 向指定的项中添加内容,如向文件中添加字词. Add-History 向会话历史记录追加条目. Add-Member 向 W ...

  8. 十一、UART&TTY驱动

    Linux系统中UART驱动和TTY驱动两者有着紧密的关系,它们不像I2C和SPI驱动是单独一个模块,分析时应当将它们看成一个整体来分析.UART驱动部分依赖于硬件平台,而TTY驱动和具体的平台无关. ...

  9. 上海某小公司面试题:synchronized锁原理

    synchronized锁是Java面试的过程中比较常考的知识点了,从偏向锁->轻量级锁->重量级锁都可以聊 CAS在这篇没有讲述,因为在上一篇已经写了,有兴趣的同学可以翻翻开 目前已经连 ...

  10. Wi-Fi IoT套件连PCF8563实现电子钟功能

    首先跟同样新入手单片机开发的小伙伴分享一点I2C通信的知识.我估计大部分入手开发板的小伙伴都有一定程序开发的能力,但是底层开发可能是新接触,我看有的小伙伴配置开发环境都有障碍,其实并不是多复杂,只是首 ...