HDU-2065-"红色病毒"问题

题目链接

http://acm.hdu.edu.cn/showproblem.php?pid=2065

对于这样的题目我的想法是: 这样的题一般是不会太难的,一般是考个什么,快速幂取模啊什么的,最直接的方法是找规律,把 1 2 3 4 5 ......列出来 分析规律

也可以递推,找A(n)与A(n-1); 的关系   在得出公式。

总而言之一般就是  找公式。

对于这题

1   是  2  = 1*2

2  是   6  = 2*3

3  是  20 = 4*5

4  是  72 = 8*9

于是大胆推出  s=(2的(n-1)次)*(2的(n-1)次-1);即s=(2^(n-1))*(2^(n-1)-1);

到了这里了就很容易了,直接快速幂取模 100;

代码

#include<stdio.h>

__int64 quickmod(__int64 a,__int64 n)
{
__int64 s=1;
while(n)
{
if(n&1)
{
s=s*a%100;
}
a=(a*a)%100;
n=n/2;
}
return s;
}

int main(void)
{
__int64 t,n,i,s;
while(scanf("%I64d",&t)==1&&t)
{
for(i=1;i<=t;i++)
{
scanf("%I64d",&n);
s=quickmod(4,n-1)+quickmod(2,n-1);
printf("Case %I64d: %I64d\n",i,s%100);
}
if(t)
printf("\n");
}
}

时间: 2024-10-30 15:15:52

HDU-2065-"红色病毒"问题的相关文章

HDU 2065 红色病毒 指数型母函数+泰勒公式

医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,该病毒及其变种的DNA的一条单链中,胞嘧啶,腺嘧啶均是成对出现的. 现在有一长度为N的字符串,满足一下条件: (1) 字符串仅由A,B,C,D四个字母组成; (2) A出现偶数次(也可以不出现); (3) C出现偶数次(也可以不出现); 计算满足条件的字符串个数. 当N=2时,所有满足条件的字符串有如下6个:BB,BD,DB,DD,AA,CC. 由于这个数据

HDU 2065 &quot;红色病毒&quot;问题 指数生成函数

题目大意:求长度为n的DNA单链,满足C和T出现偶数次,A和G任意,这样的DNA单链有多少种 去学了下指数生成函数-- 设函数A(x)=∑+∞i=0Aixii! 那么两种元素的组合就是A(x)?B(x) 理由很简单,我们发现 Aixii!?Bjxjj!=Ai?Bj?(i+j)!i!?j!xi+j(i+j)! 组合数就这样被搞出来了 那么对于此题,A和G的生成函数显然是1+x1!+x22!+...=ex 而C和T的生成函数则是1+x22!+x44!+...=ex+e?x2 故答案函数F(x)=e2

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

打分的

[HDOJ2065]&quot;红色病毒&quot;问题

"红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4742    Accepted Submission(s): 1985 Problem Description 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现,

HDU2065 &quot;红色病毒&quot;问题 【快速幂】

"红色病毒"问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4355    Accepted Submission(s): 1807 Problem Description 医学界发现的新病毒因其蔓延速度和Internet上传播的"红色病毒"不相上下,被称为"红色病毒",经研究发现

hdu2065 &quot;红色病毒&quot;问题 指数型母函数

关于指数型母函数的题目,通过用公式并展开得到系数做的吧,取最后两位就是对100取模 1 #include<stdio.h> 2 3 int QuickPow(int a,long long n,int p){ 4 int temp=a,ans=1; 5 while(n){ 6 if(n&1)ans=ans*temp%p; 7 n>>=1; 8 temp=temp*temp%p; 9 } 10 return ans; 11 } 12 13 int main(){ 14 int

hdu 2065

ps:我的天...看网上各种难..对于我这个比较懒得人...我就找规律直接水过去了...前20一个循环,注意跳过第一轮的3个数就行..然后觉得比较坑的是,那个输入N,要用long long型... 代码: #include "stdio.h" int dp1[]={1,2,6}; int dp[]={32,52,56,20,72,72,56,60,12,92,56,0,52,12,56,40,92,32,56,80}; int main(){ int T,i,k; long long

递推+矩阵快速幂 HDU 2065

1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 5 using namespace std; 6 7 //矩阵大小上限 8 const int SIZ=100; 9 int MOD=100; 10 11 //矩阵大小为n*m,初始化全部为0 12 struct mat 13 { 14 int n,m; 15 int ar[SIZ][SIZ]; 16 mat() 17 { 18 memset

母函数专题

1.Hdu 2082 找单词 题意:单词A-Z具有1-26的价值,现有字母A-Z的个数num[i],求问在不超过价值为五十的情况下,有多少种字母的组合数. 思路:用指数代表价值,价值又为数组的下标:用系数代表组成该价值的方案数,方案数为数组中存的值. 1 #include<iostream> 2 #include<memory.h> 3 using namespace std; 4 int re[55]; 5 int p1[55]; 6 int p2[55]; 7 int xx[2

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116