• 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 }
  • 相关阅读:
    欧拉函数 & 【POJ】2478 Farey Sequence & 【HDU】2824 The Euler function
    【BZOJ】2982: combination(lucas定理+乘法逆元)
    【vijos】1781 同余方程(拓展欧几里得)
    Disillusioning #1 水题+原题赛(被虐瞎)
    【HDU】3622 Bomb Game(2-SAT)
    小结:双连通分量 & 强连通分量 & 割点 & 割边
    【POJ】2942 Knights of the Round Table(双连通分量)
    【POJ】1523 SPF(割点)
    【POJ】1094 Sorting It All Out(拓扑排序)
    小结:网络流
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/6482377.html
Copyright © 2020-2023  润新知