石头剪刀布c语言

2023-11-29 18:35:03

一天,小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。

好评回答

程序参考:

#include <stdio.h>
int main()
{
 int i, a, b, c[100], m[100], n;
 int x, y, k, l;
 while (~scanf("%d %d %d", &n, &a, &b))
   {
     k = 0;
     l = 0;
     x = 0;
     y = 0;
     for (i = 0; i < a; i++)
       scanf("%d", &c[i]);
     for (i = 0; i < b; i++)
       scanf("%d", &m[i]);
     for (i = 0; i < n; i++, x++, y++)
       {
         if (x == a || y == b)
           {
             if (x == a)
               x = 0;
             if (y == b)
               y = 0;
           }
         if (c[x] == 0 && m[y] == 2)
           k++;
         else if (c[x] == 2 && m[y] == 5)
           k++;
         else if (c[x] == 5 && m[y] == 0)
           k++;
         else if (m[y] == 0 && c[x] == 2)
           l++;
         else if 见条(m[y] == 2 && c[x] == 5)
           l++;
         else if (m[y] == 5 && c[x] == 0)
           l++;
       }
     if (k > l)
       printf("A属推\n");
     if 怎怕故活婷若亮(k < l)
       printf("B\n");
     if (k == l)
       printf("draw\n");
   }
 return 0;
}