zoukankan      html  css  js  c++  java
  • HDUOJ-----2065"红色病毒"问题

    "红色病毒"问题

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 3339    Accepted Submission(s): 1422


    Problem Description
    医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,腺嘧啶均是成对出现的。
    现在有一长度为N的字符串,满足一下条件:
    (1) 字符串仅由A,B,C,D四个字母组成;
    (2) A出现偶数次(也可以不出现);
    (3) C出现偶数次(也可以不出现);
    计算满足条件的字符串个数.
    当N=2时,所有满足条件的字符串有如下6个:BB,BD,DB,DD,AA,CC.
    由于这个数据肯能非常庞大,你只要给出最后两位数字即可.
     
    Input
    每组输入的第一行是一个整数T,表示测试实例的个数,下面是T行数据,每行一个整数N(1<=N<2^64),当T=0时结束.
     
    Output
    对于每个测试实例,输出字符串个数的最后两位,每组输出后跟一个空行.
     
    Sample Input
    4
    1
    4
    20
    11
    3
    14
    24
    6
    0
     
    Sample Output
    Case 1: 2
    Case 2: 72
    Case 3: 32
    Case 4: 0
     
    Case 1: 56
    Case 2: 72
    Case 3: 56
     
    Author
    Rabbit
     
    Source
    如何找到规律
    n=1   --〉B,D  ans= 2=1*2=2^0*2=2^0(2^0+1)
    n=2  -->   ans=6;     =2*3=2^1*3=2^1(2^1+1)
    n=3  --> ans=20       =4*5=2^2*5=2^2(2^2+1)
    n=4 ---> ans=72      = 8*9=2*3*9=2^3(2^3+1)
    n=k ---->  ???          =2^k-1*(2^k-1+1)
       于是题目转化为快速幂问题.....
    代码:
     1 /*@coder 龚细军*/
     2 /*快速幂算法*/
     3 #include<stdio.h>
     4 int main()
     5 {
     6     int t,cnt,ans,i;
     7     _int64 n;
     8     while(scanf("%d",&t)!=EOF,t)
     9     {
    10      for(i=1;i<=t;i++)
    11      {
    12         cnt=2;
    13         ans=1;
    14         scanf("%I64d",&n);
    15         n--;
    16         while(n)
    17         {
    18             if(n&1)   
    19             {
    20                 ans*=cnt;
    21                 ans%=100;
    22                 n--;
    23             }
    24             else
    25             {
    26                 cnt*=cnt;
    27                 cnt%=100;
    28                 n>>=1;
    29             }
    30         }
    31      printf("Case %d: %d
    ",i,(ans*(ans+1))%100);
    32      }
    33      putchar(10);
    34     }
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    paip.注册java程序为LINUX系统服务的总结。
    paip.Log4j配置不起作用的解决
    paip.获取地理位置根据Ip
    paip.抓取网页内容--java php python
    paip.java 开发中web server的选择jboss resin tomcat比较..
    paip.c++ 转换 java 解决方案
    paip.java c# .net php python调用c++ c dll so windows api 总结
    SVN的405错误
    怎样开启SQL数据库服务
    C#中读取二维数组每位的长度
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3496551.html
Copyright © 2011-2022 走看看