zoukankan      html  css  js  c++  java
  • Computer Transformation(规律,大数打表)

    Computer Transformation

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 6946    Accepted Submission(s): 2515


    Problem Description
    A sequence consisting of one digit, the number 1 is initially written into a computer. At each successive time step, the computer simultaneously tranforms each digit 0 into the sequence 1 0 and each digit 1 into the sequence 0 1. So, after the first time step, the sequence 0 1 is obtained; after the second, the sequence 1 0 0 1, after the third, the sequence 0 1 1 0 1 0 0 1 and so on.

    How many pairs of consequitive zeroes will appear in the sequence after n steps?
     
    Input
    Every input line contains one natural number n (0 < n ≤1000).
     
    Output
    For each input n print the number of consecutive zeroes pairs that will appear in the sequence after n steps.
     
    Sample Input
    2 3
     
    Sample Output
    1 1
    题解:f(n)=2*f(n-2)+f(n-1)由于每个n-2的00生成两个01,在n的地方就会生成两个00;n-1的00在n生成一个00;由此可以找出规律;
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 using namespace std;
     7 #define mem(x,y) memset(x,y,sizeof(x))
     8 typedef long long LL;
     9 const int MAXN=1010;
    10 char dp[MAXN][MAXN];
    11 char c[MAXN];
    12 int x[MAXN],y[MAXN],z[MAXN];
    13 void bigsum(char *a,char *b){
    14     int len1,len2;
    15     mem(x,0);mem(y,0);mem(z,0);
    16     len1=strlen(a);len2=strlen(b);
    17     int len=max(len1,len2);
    18     for(int i=len1-1,j=0;i>=0;i--,j++)x[j]=a[i]-'0';
    19     for(int i=len2-1,j=0;i>=0;i--,j++)y[j]=b[i]-'0';
    20     for(int i=0;i<len;i++){
    21         z[i]=x[i]+y[i]+z[i];
    22         z[i+1]+=z[i]/10;
    23         z[i]%=10;
    24         if(z[len])len++;
    25     }
    26     for(int i=len-1,j=0;i>=0;i--,j++)c[j]=z[i]+'0';
    27     c[len]='';
    28 }
    29 int main(){
    30     int n;
    31     dp[1][0]='0';dp[1][1]='';
    32     dp[2][0]='1';dp[2][1]='';
    33     for(int i=3;i<=1000;i++){
    34         bigsum(dp[i-1],dp[i-2]);
    35         bigsum(c,dp[i-2]);
    36         memcpy(dp[i],c,sizeof(c));
    37     }
    38     while(~scanf("%d",&n)){
    39         printf("%s
    ",dp[n]);
    40     }
    41     return 0;
    42 }
     
  • 相关阅读:
    将戴尔台式机的系统刷成Linux Centos7
    如何在Maven构建的Java项目中使用log4j
    mybatis-generator逆向工程自动生成mapper
    Win10改变系统主题颜色,降低对眼睛的刺激
    09、SpringBoot 整合 jdbcTemplate、Mybatis
    08、SpringBoot配置拦截器
    navicat快捷键
    DevOps:从理念到实施
    活到老学到老啊技术人
    Linux上安装java+tomcat+mysql运行环境
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4966819.html
Copyright © 2011-2022 走看看