HDU2065 "红色病毒"问题 【组合数学 二项式定理】
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 "红色病毒"问题 【组合数学 二项式定理】的更多相关文章
- hdu2065"红色病毒"问题(指数母函数+快速幂取模)
"红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU2065"红色病毒"问题【指数型母函数】
Problem Description 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其 ...
- HDU2065 “红色病毒”问题 (指数型母函数经典板题)
题面 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶, ...
- [HDU2065] "红色病毒"问题
传送门:>Here< 题意:现在有一长度为N的字符串,满足一下条件: (1) 字符串仅由A,B,C,D四个字母组成; (2) A出现偶数次(也可以不出现); (3) C出现偶数次(也可以不 ...
- hdu2065 "红色病毒"问题 指数型母函数
关于指数型母函数的题目,通过用公式并展开得到系数做的吧,取最后两位就是对100取模 #include<stdio.h> int QuickPow(int a,long long n,int ...
- 【指数型母函数+非递归快速幂】【HDU2065】"红色病毒"问题
大一上学完数分上后终于可以搞懂指数型母函数了.. 需要一点关于泰勒级数的高数知识 题目在此: "红色病毒"问题 Time Limit: 1000/1000 MS (Java/Oth ...
- HDUOJ-----2065"红色病毒"问题
"红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- HDU 2065 "红色病毒"问题(生成函数)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...
- HDU 2065 “红色病毒”问题 --指数型母函数
这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次 ...
随机推荐
- 【Java基础】枚举类与注解
枚举类与注解 枚举类的使用 当需要定义一组常量时,强烈建议使用枚举类. 枚举类的理解:类的对象只有有限个,确定的. 若枚举只有一个对象, 则可以作为一种单例模式的实现方式. 枚举类的属性: 枚举类对象 ...
- 【剑指 Offer】03.数组中重复的数字
题目描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中 ...
- 了解一下ajax
AJAX:是一种无需重新加载页面的情况下能够更新部分(局部更新)网页的技术. 1. 概念:ASychronous JavaScript And XML 异步的JavaScript和XML 首先了解一下 ...
- 【Java】Java注释 - 单行、块、文档注释
简单记录,Java 核心技术卷I 基础知识(原书第10 版) 注释 我们在编写程序时,经常需要添加一些注释,用来描述某段代码的作用,提高Java源程序代码的可读性,使得Java程序条理清晰. 写代码的 ...
- [工作札记]03: 微软Winform窗体中ListView、DataGridView等控件的Bug,会导致程序编译失败,影响范围:到最新的.net4.7.2都有
工作中,我们发现了微软.net WinForm的一个Bug,会导致窗体设计器自动生成的代码失效,这个Bug从.net4.5到最新的.net4.7.2都存在,一直没有解决.最初是我在教学工作中发现的,后 ...
- Goby资产扫描工具安装及报错处理
官网: https://cn.gobies.org/index.html 产品介绍: 帮企业梳理资产暴露攻击面,新一代网络安全技术,通过为目标建立完整的资产数据库,实现快速的安全应急. 已有功能: 扫 ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
- 基于HBuilderX+UniApp+ColorUi+UniCloud 优宝库 开发实战(一)
1. 优宝库介绍 优宝库是基于阿里妈妈.淘宝联盟 淘宝商品Api,前端使用HBuilderX + UniApp + ColorUi,后端采用UniClound 精选淘宝商品进行推荐的App程序.下 ...
- mybatis源码解析之架构理解
mybatis是一个非常优秀的开源orm框架,在大型的互联网公司,基本上都会用到,而像程序员的圣地-阿里虽然用的是自己开发的一套框架,但其核心思想也无外乎这些,因此,去一些大型互联网公司面试的时候,总 ...
- 自导自演的面试现场,趣学MySQL的10种文件
导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"自导自演的数据库面试现场--谈谈MySQL的10种文件" 换一种写作风格 ...