题意:

给原始序列1

给定变化规则是,对于原来的序列每一个0前边插入1,每个1前边插入0.

问原始序列经过n次变化之后有多少对相邻的0.

规律题:

从第二次开始

当第奇数次变化之后,数量变成原来数量的两倍-1;

当第偶数次变化之后,数量变成原来数量的两倍+1;

但是由于数据2^1000次方太大,需要用到大数,屌丝还没学到java对大数的处理,所以只写了一个高精度。

/*************************************************************************
> File Name: C.cpp
> Author: ttpond
> Created Time: 2015-8-22 15:32:30
************************************************************************/
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<set>
using namespace std;
char dp[][];
void cal(int pos)
{
int len=strlen(dp[pos-]);
int mm[];
memset(mm,,sizeof(mm));
int tmp;
for(int i=;i<len;i++)
{
mm[i]+=(dp[pos-][i]-)*;
mm[i+]+=mm[i]/;
mm[i]=mm[i]%;
}
for(int i=;i<len+;i++)
{
dp[pos][i]=mm[i]+;
}
if(dp[pos][len]=='')
dp[pos][len]=;
}
void add(int pos)
{
int len=strlen(dp[pos]);
int tmp;
int mm[];
memset(mm,,sizeof(mm));
mm[]=;
for(int i=;i<len;i++)
{
mm[i]+=dp[pos][i]-;
mm[i+]=mm[i]/;
mm[i]=mm[i]%;
}
for(int i=;i<len+;i++)
{
dp[pos][i]=mm[i]+;
}
if(dp[pos][len]=='')
dp[pos][len]=;
}
void sub(int pos)
{
int len=strlen(dp[pos]);
int mm[];
memset(mm,,sizeof(mm));
mm[]=-;
for(int i=;i<len;i++)
{
mm[i]+=dp[pos][i]-;
if(mm[i]<)
{
mm[i]+=;
mm[i+]--;
}
}
for(int i=;i<len;i++)
{
dp[pos][i]=mm[i]+;
}
if(dp[pos][len-]=='')
dp[pos][len-]=;
}
int main()
{
memset(dp,,sizeof(dp));
dp[][]='';
dp[][]='';
dp[][]='';
bool st=;
for(int i=;i<=;i++)
{
cal(i);
if(!st)
{
add(i);
}
else
{
sub(i);
}
st=!st;
}
int n;
while(scanf("%d",&n)!=EOF)
{
int len=strlen(dp[n]);
for(int i=len-;i>=;i--)
{
printf("%c",dp[n][i]);
}
printf("\n");
}
}

HDU 1041的更多相关文章

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

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

  2. hdu 1041 (OO approach, private constructor to prevent instantiation, sprintf) 分类: hdoj 2015-06-17 15:57 25人阅读 评论(0) 收藏

    a problem where OO seems more natural to me, implementing a utility class not instantiable. how to p ...

  3. HDU 1041 Computer Transformation

    这道题目的意思是:一开始有一个数字 1 ,在接下来的时间中,计算机会按照如下规则进行扩展:                0 –> 1 0                1 –> 0 1 ...

  4. HDU 1041 Computer Transformation(找规律加大数乘)

    主要还是找规律,然后大数相乘 #include<stdio.h> #include<string.h> #include<math.h> #include<t ...

  5. HDU 1041(01展开 大数)

    题意是将 1 展开成 01 ,将 0 展开成 10 ,问这样展开 n 次后序列中有多少对 0. 手写发现:0,1,1,3,5,11 ... 即 a[ i ] = a[ i -1 ] + a[ i - ...

  6. hdu 1041(递推,大数)

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

  7. HDU 1041 Computer Transformation 数学DP题解

    本题假设编程是使用DP思想直接打表就能够了. 假设是找规律就须要数学思维了. 规律就是看这些连续的0是从哪里来的. 我找到的规律是:1经过两次裂变之后就会产生一个00: 00经过两次裂变之后也会产生新 ...

  8. HDU——PKU题目分类

    HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...

  9. 【转载】图论 500题——主要为hdu/poj/zoj

    转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...

随机推荐

  1. 1   开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。   本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括:    正确的使用数据库MetaData方法    只获取需要的数据    选用最佳性能的功能    管理连

    1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你. 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的 ...

  2. js递归和数组去重(简单便捷的用法)

    1.递归例子<script type="text/javascript"> function test(num) { if(num < 0) { return; ...

  3. 如何用sql server数据库恢复.bak数据库备份

    @hcy(黄灿奕) 之前有两次都恢复不了,折腾了很长时间,这一次碰到这样的问题,居然又忘了,又捣鼓了很长时间,现在记下来 1.右击SQL Server 2008实例下的“数据库”文件夹.就是与安全性. ...

  4. Mysql数据库表的迁移和表的复制

    同一台服务器上的,数据库之间的表的迁移: create table db.tablename as select * from db2.tablename; 此sql使用于mysql,从一台服务器上的 ...

  5. Android接入支付宝和微信支付

    然后把下载下来的aar包,放到项目目录下面的libs目录下,通过下面的gradle依赖进来 // 支付宝 SDK AAR 包所需的配置compile(name: 'alipaySdk-15.6.0-2 ...

  6. shell 数值比较和字符串比较

    1. 数值比较 -eq        是否相等(equal) -gt         是否大于(greater than) -ge       是否大于等于(greater and equal tha ...

  7. docker 容器的网络

    容器的网络模式 bridge -net=bridge 默认网络.docker启动后创建一个docker0网桥,默认创建的容器也添加到这个网桥 [root@localhost ~]# ip a 1: l ...

  8. ajax请求的时候get 和post方式的区别

    ajax请求的时候get 和post方式的区别?一个在url后面一个放在虚拟载体里面有大小限制安全问题应用不同一个是论坛等只需要请求的,一个是类似修改密码的

  9. 深入了解JVM(Java虚拟机)

    虚拟机 JRE由Java API和JVM组成,JVM通过类加载器(Class Loader)加类Java应用,并通过Java API进行执行. 虚拟机(VM: Virtual Machine)是通过软 ...

  10. 【搜索】P1468 派对灯 Party Lamps

    P1468 派对灯 Party Lamps 我们来分析一下对灯的操作 1.对所有灯的,这时吧所有灯看成一个整体 2.奇偶数的操作,这时可以把每两个数看成一个循环节 3.对3X+ 1的操作,这时可以把每 ...