首页 > 代码库 > B 倒不了的塔
B 倒不了的塔
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: 无限制
描述
Dota是Defense of the Ancients的简称,是一个dhk和yjf都很喜欢玩的游戏。虽然作为一个ACMer大部分时间都在努力地码啊码,但是,这2个大神每当听到dota这个词就会拉着别人打dota,丧心病狂得简直令人发指!于是作为他们同学的我也遭殃了。。。 现在科普一下,dota是一开始每人选一个英雄来攻别人塔的游戏,此处省略一万字。。。里面有好多英雄可以选,什么力量型、敏捷型、智力型英雄,这些英雄还分了2个阵型,天灾军团和近卫军团,每一个英雄都是不同的,好了,现在问题来了。 近卫军团有n个英雄,天灾军团有m个英雄,一般我们都选近卫军团,所以只能选近卫军团的英雄,但是也可以输入-ap指令,然后我们所有人都可以选近卫军团和天灾军团的英雄了。现在我、小A、小B、dhk、yjf按顺序选英雄(共5人),理论上某人选了的英雄别人是不能选的,现在我想知道我们选的英雄有多少种可能的情况,但是我又要陪他们打dota,所以想请14级未来的acmer来算一算。 另外,由于dhk和yjf是大神,只要他们各自输入mynameisdhk 、 mynameisyjf 别人选了的英雄他们也能选(而且不会冲突),必须连续的才能生效!
输入格式
输入由3行组成,第一行分别是n,m,k,分别代表近卫军团的英雄数,天灾军团的英雄数,是否输入了-ap指令(0代表没有输入,1代表输入了)。第二行是一串字符s1,代表dhk输入了的字符串,若字符串包含mynameisdhk 则dhk可以选别人选了的英雄。第三行是一串字符s2,代表yjf输入了的字符串,若字符串包含mynameisyjf 则yjf 可以选别人选了的英雄。其中0 <= n + m <= 64, 0 <= k <= 1, s1 和 s2 的长度小于100,且只包含小写字母(sample有2组,只是给你们看的,实际的数据是单case的,所以每组数据只有上述描述的3行)
输出格式
直接输出题目要求的情况数。
输入样例
5 50 0mynameisdagouxiongnotdhkniconicomynameisyjf3 2 1niconicomynameisyjfmynameisdagouxiongnotdhk
输出样例
600120
Hint
需要注意的是,yjf选了C英雄,dhk选了D英雄 和 yjf选了 D 英雄,dhk选了C英雄,这是不一样的情况。
#include<string.h>#include<stdio.h>int main(){ char *p1,*p2; int k,n,m,temp,sum=0; char s1[2000],s2[2000]; scanf("%d%d%d",&n,&m,&k); if(k==0) temp=n; else temp=n+m; getchar(); gets(s1); gets(s2); p1=strstr(s1,"mynameisdhk"); p2=strstr(s2,"mynameisyjf"); if(p1!=NULL&&p2==NULL) sum=temp*(temp-1)*(temp-2)*3*(temp-3)+temp*(temp-1)*(temp-2)*(temp-3)*(temp-4); if(p1==NULL&&p2!=NULL) sum=temp*(temp-1)*(temp-2)*(temp-3)*temp; if(p1==NULL&&p2==NULL) sum=temp*(temp-1)*(temp-2)*(temp-3)*(temp-4); if(p1!=NULL&&p2!=NULL) sum=temp*(temp-1)*(temp-2)*temp*temp; printf("%d",sum);return 0;}
B 倒不了的塔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。