zoukankan      html  css  js  c++  java
  • POJ 2680 Computer Transformation

    题意:

      一个序列,开始时为1,接下来每步,该序列中的1变为01,0变为10,求第n步时序列中连续的0有多少对?

    分析:

      令Sn表示第n个序列,~Sn表示第n个序列的反,An表示第n步时序列中连续的0的对数。

      0 : 1

      1 : 01

      2 : 1001

      3 : 01101001

      4 : 1001011001101001

      5 : 01101001100101101001011001101001

     

      观察可得,Sn=~Sn-1+Sn-1;

        (1)n为奇数时,Sn中连续的10的数相同

          ~Sn的末位和Sn的首位都是0

          An+1=An+An+1;

        (2)n为偶数时,Sn中连续的10的少1

          ~Sn的末位是0Sn的首位都是0

           An+1=An+An-1;

     

    View Code
    #include<cstdio>
    #include<cstring>
    #define UNIT 100000000
    using namespace std;
    
    int a[1010][55];
    
    int main()
    {
        int i,j,n;
        memset(a,0,sizeof(a));
        for(i=2;i<=1000;i++)
        {
            for(j=0;j<50;j++)
                a[i][j]=a[i-1][j]*2;
            if(i&1)
            {
                a[i][0]--;
                for(j=0;a[i][j]<0;j++)
                    a[i][j]+=UNIT,a[i][j+1]--;
            }
            else
                a[i][0]++;
            for(j=0;j<50;j++)
            {
                a[i][j+1]+=a[i][j]/UNIT;
                a[i][j]%=UNIT;
            }
        }
        for(;scanf("%d",&n)+1;)
        {
            if(n==1)
            {
                puts("0");
                continue;
            }
            for(j=49;!a[n][j];j--);
            printf("%d",a[n][j]);
            for(j--;j>=0;j--)
                printf("%08d",a[n][j]);
            puts("");
        }
        return 0;
    }
  • 相关阅读:
    day63_django_html
    day62_django
    day20
    diango_自定义标签问题
    day64_django_orm
    day16_函数嵌套及对象
    day60_django
    pip 安装问题
    day13_文件操作
    文本溢出显示省略号(…) 小坦克
  • 原文地址:https://www.cnblogs.com/xchaos/p/2607575.html
Copyright © 2011-2022 走看看