08:石头剪刀布
08:石头剪刀布
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。
一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?
- 输入
- 输入包含三行。
第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0 < N,NA,NB < 100。
第二行包含NA个整数,表示小A出拳的规律。
第三行包含NB个整数,表示小B出拳的规律。
其中,0表示“石头”,2表示“剪刀”,5表示“布”。相邻两个整数之间用单个空格隔开。 - 输出
- 输出一行,如果小A赢的轮数多,输出A;如果小B赢的轮数多,输出B;如果两人打平,输出draw。
- 样例输入
-
10 3 4 0 2 5 0 5 0 2
- 样例输出
-
A
- 提示
- 对于测试数据,猜拳过程为:
A:0 2 5 0 2 5 0 2 5 0
B:0 5 0 2 0 5 0 2 0 5
A赢了4轮,B赢了2轮,双方打平4轮,所以A赢的轮数多。 -
1 #include<iostream> 2 #include<cmath> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 using namespace std; 7 int a[10001]; 8 int b[10001]; 9 int now_a[100001]; 10 int now_b[100001]; 11 int ying_a; 12 int ying_b; 13 int ping; 14 int main() 15 { 16 int n;//总共进行了n轮 17 int a_z,b_z;//a,b的出拳周期 18 cin>>n>>a_z>>b_z; 19 for(int i=1;i<=a_z;i++) 20 { 21 cin>>a[i]; 22 now_a[i]=a[i]; 23 } 24 for(int i=1;i<=b_z;i++) 25 { 26 cin>>b[i]; 27 now_b[i]=b[i]; 28 } 29 int now=1; 30 for(int i=a_z+1;i<=n;i++) 31 { 32 a[i]=now_a[now]; 33 if(now==a_z) 34 { 35 now=1; 36 } 37 else now++; 38 } 39 for(int i=a_z+1;i<=n;i++) 40 { 41 a[i]=now_a[now]; 42 if(now==a_z) 43 { 44 now=1; 45 } 46 else now++; 47 } 48 for(int i=b_z+1;i<=n;i++) 49 { 50 b[i]=now_b[now]; 51 if(now==b_z) 52 { 53 now=1; 54 } 55 else now++; 56 } 57 for(int i=1;i<=n;i++)// 0石头 2剪刀 5布 58 { 59 if(a[i]==0&&b[i]==0) 60 ping++; 61 if(a[i]==0&&b[i]==2) 62 ying_a++; 63 if(a[i]==0&&b[i]==5) 64 ying_b++; 65 if(a[i]==2&&b[i]==0) 66 ying_b++; 67 if(a[i]==2&&b[i]==2) 68 ping++; 69 if(a[i]==2&&b[i]==5) 70 ying_a++; 71 if(a[i]==5&&b[i]==0) 72 ying_a++; 73 if(a[i]==5&&b[i]==2) 74 ying_b++; 75 if(a[i]==5&&b[i]==5) 76 ping++; 77 } 78 if(ying_a>ying_b) 79 { 80 cout<<"A"; 81 } 82 else if(ying_a<ying_b) 83 { 84 cout<<"B"; 85 } 86 else cout<<"draw"; 87 return 0; 88 }
作者:自为风月马前卒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。