luoguP1328 生活大爆炸版石头剪刀布

题目描述

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8 集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

现在,小A 和小B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A以“石头 - 布- 石头- 剪刀- 蜥蜴人- 斯波克”长度为6 的周期出拳,那么他的出拳序列就是“石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- 石头- 布- 石头- 剪刀- 蜥蜴人- 斯波克- ……”,而如果小B 以“剪刀- 石头- 布- 斯波克- 蜥蜴人”长度为5 的周期出拳,那么他出拳的序列就是“剪刀- 石头- 布- 斯波克- 蜥蜴人- 剪刀- 石头- 布-斯波克- 蜥蜴人- ……”

已知小A 和小B 一共进行N 次猜拳。每一次赢的人得1 分,输的得0 分;平局两人都得0 分。现请你统计N 次猜拳结束之后两人的得分。

 1 #include<iostream>
 2 #include<cstdio>
 3 #define X 200+7
 4 int a[X],b[X],c[X];//c是用来存出拳的一个周期,a是用来存长度为n的a的多个周期长度,b同上
 5 using namespace std;
 6 int main()
 7 {
 8     /*freopen("rps.in","r",stdin);
 9     freopen("rps.out","w",stdout);*/
10     int n,na,nb,js;
11     scanf("%d%d%d",&n,&na,&nb);
12     for(int i=1;i<=na;++i)
13     {
14         scanf("%d",&c[i]);
15     }
16     js=1;
17     for(int i=1;i<=n;++i)//将a的出拳结果复制到长度为n的数组里面,方便以后进行比较
18     {
19         if(js==na+1)js=1;
20         a[i]=c[js];
21         ++js;
22     }
23     for(int i=1;i<=nb;++i)
24     {
25         scanf("%d",&c[i]);
26     }
27     js=1;
28     for(int i=1;i<=n;++i)//将b的出拳结果复制到长度为n的数组里面
29     {
30         if(js==nb+1)js=1;
31         b[i]=c[js];
32         ++js;
33     }
34     int dfa=0,dfb=0;
35     for(int i=1;i<=n;++i)
36     {
37          if((a[i]==0&&b[i]==2)||(a[i]==0&&b[i]==3))dfa++;//因为要判断25种情况,但其中有5种是平的,所以不需要判断这5中,所以只剩下20种
38          if((a[i]==0&&b[i]==1)||(a[i]==0&&b[i]==4))dfb++;
39          if(a[i]==1&&b[i]==3)dfa++;
40          if((a[i]==1&&b[i]==2)||(a[i]==1&&b[i]==4))dfb++;
41          if(a[i]==2&&b[i]==4)dfa++;
42          if(a[i]==2&&b[i]==3)dfb++;
43          if(a[i]==3&&b[i]==4)dfa++;
44          if((b[i]==0&&a[i]==2)||(b[i]==0&&a[i]==3))dfb++;
45          if((b[i]==0&&a[i]==1)||(b[i]==0&&a[i]==4))dfa++;
46          if(b[i]==1&&a[i]==3)dfb++;
47          if((b[i]==1&&a[i]==2)||(b[i]==1&&a[i]==4))dfa++;
48          if(b[i]==2&&a[i]==4)dfb++;
49          if(b[i]==2&&a[i]==3)dfa++;
50          if(b[i]==3&&a[i]==4)dfb++;
51     }
52     cout<<dfa<<" "<<dfb;
53 }

猜你喜欢

转载自www.cnblogs.com/tpgzy/p/8903050.html