P1328. 生活大爆炸版石头剪刀布

考点

  • 模拟

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <bits/stdc++.h>

using namespace std;

//0是平,1是赢,-1是输
int arr[5][5] = {
{0, -1, 1, 1, -1},
{1, 0, -1, 1, -1},
{-1, 1, 0, -1, 1},
{-1, -1, 1, 0, 1},
{1, 1, -1, -1, 0}};

int A[250] = {0}, B[250] = {0};

int main()
{
int n, a, b, ans_a = 0, ans_b = 0, idx_a = 0, idx_b = 0;
cin >> n >> a >> b;
for (int i = 0; i < a; ++i)
cin >> A[i];
for (int i = 0; i < b; ++i)
cin >> B[i];
for (int i = 0; i < n; ++i)
{
if (arr[A[idx_a]][B[idx_b]] == -1)
{
++ans_b;
}
else if (arr[A[idx_a]][B[idx_b]] == 1)
{
++ans_a;
}
++idx_a, ++idx_b;
idx_a %= a, idx_b %= b;
}
cout << ans_a << " " << ans_b;
return 0;
}

思路

通过二维数组,打表两个人的输赢关系即可