题意:

给原始序列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. (转)使用Spring的注解方式实现AOP的细节

    http://blog.csdn.net/yerenyuan_pku/article/details/52879669 前面我们已经入门使用Spring的注解方式实现AOP了,现在我们再来学习使用Sp ...

  2. Window服务程序(windows service application)如何调试

    服务程序不能通过常规的按F5或F11的方式来进行调试和运行,也无法立即运行一个服务或逐步调试它的代码. 因此,你必须安装并启动你的服务,然后附属(attach)一个Debugger到这个服务的进程上.

  3. Java实现LRU(最近最少使用)缓存

    package com.jd.test; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.c ...

  4. 模拟、字符串--P1042 乒乓球 题解

    P1042 乒乓球 字符串string的基本使用 #include <iostream> #include <algorithm> #include <map> # ...

  5. JavaScript中函数的定义

    JavaScript中函数的定义 制作人:全心全意 在JavaScript中,函数是由关键字function.函数名加一组参数以及置于大括号中需要执行的一段代码定义的.定义函数的基本语法格式如下: f ...

  6. 分分钟钟学会Python - 函数(function)

    函数(function) 1 基本结构 本质:将多行代码拿到别处并起个名字,以后通过名字就可以找到这行代码并执行 应用场景: 代码重复执行 代码量很多超过一屏,可以选择通过函数进行代码的分割 写代码方 ...

  7. Feedback on Ch5 paper based on CFD-RANS

    It is encouraging that you took the initiative to write this journal manuscript, but it needs a lot ...

  8. 剑指Offer(书):重建二叉树

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2, ...

  9. POJ 2553 The Bottom of a Graph(强连通分量的出度)

    题意: 求出图中所有汇点 定义:点v是汇点须满足 --- 对图中任意点u,若v可以到达u则必有u到v的路径:若v不可以到达u,则u到v的路径可有可无. 模板:http://www.cnblogs.co ...

  10. jsp从servlet中获取的值为空

    System.out.println("进入servlet"); UserServiceImpl us=new UserServiceImpl(); List<User> ...