HDU2065 "红色病毒"问题

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

题解:

可以发现\(AC\)等价,\(BD\)等价,现在要求计算方案数,A和C都是出现偶数次,我们首先枚举A和C一共出现的次数(一次出现指出现两个\(A\)或两个\(C\)),从\(0\)到\(\frac{n}{2}\),假设现在\(AC\)一共出现\(i\)次(一共\(2i\)个),接下来我们首先计算\(BD\)的位置的方案数,显然此时方案数为\(C(n,n-2i)\cdot 2^{n-2i}\)(先选定位置,然后每个位置可以放\(B\)或者\(D\)),接下来考虑\(AC\)的分配,也即把剩下的\(2i\)个位置分配给\(AC\),那么可以枚举\(A\)的出现次数,从\(0\)到\(2i\),且必然是偶数,根据以上,可以的到一个计数的表达式:

\(Ans = \sum_{i=0}^{\frac{n}{2}}[C(n,n-2i)\cdot 2^{n-2i}\cdot \sum^{i}_{j=0}C(2i,2j)]\)

可以发现里面的那个求和,其实就是计算组合数的偶数项,那么可以知道\(\sum_{j=0}^{i}C(2i,2j)=2^{2i-1}\),但是要注意\(i=0\)的情况下是不成立的,所以需要把\(i=0\)的项单独拿出来,式子就变成这样了:

\(Ans = 2^{n} + \sum_{i=1}^{\frac{n}{2}}[C(n,n-2i)\cdot 2^{n-2i}\cdot 2^{2i-1}]\)

\(=2^{n} + \sum_{i=1}^{\frac{n}{2}}[C(n,n-2i)\cdot 2^{n-1}]\)

\(=2^{n} + 2^{n-1}\cdot \sum_{i=1}^{\frac{n}{2}}[C(n,n-2i)]\)

\(=2^{n} + 2^{n-1}\cdot (\sum_{i=0}^{\frac{n}{2}}[C(n,n-2i)] - 1)\)

\(=2^{n} + 2^{n-1}\cdot (2^{n-1}-1)\)

\(=2^{n-1}\cdot (2^{n-1}+1)\)

//#pragma GCC optimize("O3")
//#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<bits/stdc++.h>
using namespace std;
function<void(void)> ____ = [](){ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);};
int qpow(long long p){
int ret = 1, base = 2;
while(p){
if(p&1) ret = ret * base % 100;
p >>= 1;
base = base * base % 100;
}
return ret;
}
void solve(int T){
for(int kase = 1; kase <= T; kase++){
int_fast64_t n; scanf("%I64d",&n);
printf("Case %d: %d\n",kase,(qpow(n-1)*(qpow(n-1)+1))%100);
}
puts("");
}
int main(){
int T; while(scanf("%d",&T) and T) solve(T);
return 0;
}

HDU2065 "红色病毒"问题 【组合数学 二项式定理】的更多相关文章

  1. hdu2065"红色病毒"问题(指数母函数+快速幂取模)

    "红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  2. HDU2065"红色病毒"问题【指数型母函数】

    Problem Description 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其 ...

  3. HDU2065 “红色病毒”问题 (指数型母函数经典板题)

    题面 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶, ...

  4. [HDU2065] "红色病毒"问题

    传送门:>Here< 题意:现在有一长度为N的字符串,满足一下条件: (1) 字符串仅由A,B,C,D四个字母组成; (2) A出现偶数次(也可以不出现); (3) C出现偶数次(也可以不 ...

  5. hdu2065 "红色病毒"问题 指数型母函数

    关于指数型母函数的题目,通过用公式并展开得到系数做的吧,取最后两位就是对100取模 #include<stdio.h> int QuickPow(int a,long long n,int ...

  6. 【指数型母函数+非递归快速幂】【HDU2065】"红色病毒"问题

    大一上学完数分上后终于可以搞懂指数型母函数了.. 需要一点关于泰勒级数的高数知识 题目在此: "红色病毒"问题 Time Limit: 1000/1000 MS (Java/Oth ...

  7. HDUOJ-----2065"红色病毒"问题

    "红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  8. HDU 2065 "红色病毒"问题(生成函数)

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  9. HDU 2065 “红色病毒”问题 --指数型母函数

    这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次 ...

随机推荐

  1. dhcp分发地址以及静态路由设置

    路由器R1配置: system-view [Huawei]sysname R1 [R1]user-interface console 0 [R1-ui-console0]idle-timeout 0 ...

  2. Flutter 布局类组件:层叠布局(Stack和Positioned)

    前言 层叠布局,即子组件可以根据距父容器四个角的位置来确定自身的位置.绝对定位运行子组件堆叠起来,即按照代码中声明的顺序. Flutter中使用Stack和Positioned这两个组件来配合实现绝对 ...

  3. Java远程下载文件到本地(http协议和ssh2协议)

    Java中java.io包为我们提供了输入流和输出流,对文件的读写基本上都依赖于这些封装好的关于流的类中来实现.前段时间遇到了以下两种需求: 1.与某系统对接,每天获取最新的图片并显示在前端页面.该系 ...

  4. Openstack Ocata 负载均衡安装(二)

    Openstack OCATA 负载节点(二) 安装haproxy: apt install haproxy 配置haproxy: vim /etc/haproxy/haproxy.cfg globa ...

  5. selenium爬虫 | 爬取疫情实时动态(二)

    '''@author:Billie更新说明:1-28 17:00 项目开始着手,spider方法抓取到第一条疫情数据,save_data_csv方法将疫情数据保存至csv文件1-29 13:12 目标 ...

  6. drop table 命令不回收以前的相关访问权限

    drop table 命令不回收以前的相关访问权限,也就是说假如我现在把表删除了,然后再创建一个同名的表时,会自动赋予权限的.

  7. P2979 [USACO10JAN]奶酪塔Cheese Towers(完全背包,递推)

    题目描述 Farmer John wants to save some blocks of his cows' delicious Wisconsin cheese varieties in his ...

  8. USB限流芯片,4.8A最大,过压关闭6V

    PW1503,PW1502是超低RDS(ON)开关,具有可编程的电流限制,以保护电源源于过电流和短路保护.它具有超温保护以及反向闭锁功能. PW1503,PW1502采用薄型(1毫米)5针薄型SOT2 ...

  9. QT串口助手(三):数据接收

    作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.前言 开发环境:Qt5.12.10 + MinGW 实现的功能 串口数据的接收 ascii字符形式显示与hex字符形式显 ...

  10. 计算机网络安全 —— 对称加密算法 DES

    一.对称加密算法概念 我们通过计算机网络传输数据时,如果无法防止他人窃听, 可以利用密码学技术将发送的数据变换成对任何不知道如何做逆变换人都不可理解的形式, 从而保证了数据的机密性.这种变换被称为加密 ...