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 }
     
  • 相关阅读:
    [笔记]Oracle遇到的问题及解决的办法
    [转载] linux三款好用网络监控软件(bwmng 、iftop、iptraf)
    IE无法打开internet站点已终止操作的解决办法 (转)
    怎样去掉桌面图标和字的蓝色阴影
    ASP.NET下载文件(转载)
    获取iframe内容IE下的延时 (转载)
    文件上传入数据库&从数据库中下载文件(转载)
    asp.net 4.0 A potentially dangerous Request.Form value was detected fr(转载)
    location.search
    IE6下的CSS BUG枚举 (转)
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4966819.html
Copyright © 2011-2022 走看看