题解 P1328 【生活大爆炸版石头剪刀布】
二维数组+奇葩得分
因为双方最多只能得200分,让A方赢加10000,另一方赢加1,再整除(求余)肯定没问题。
#include<bits/stdc++.h>
using namespace std;
int a[5][5] = { {0,1,10000,10000,1},
{10000,0,1,10000,1},
{1,10000,0,1,10000},
{1,1,10000,0,10000},
{10000,10000,1,1,0} }; //二维打表省去冗长if(switch)
int main()
{
int n; cin >> n; //局数
int r[210], s[210];
int na, nb; cin >> na >> nb;
for (int i = 0; i < na; i++)
cin >> r[i];
for (int i = 0; i < nb; i++)
cin >> s[i]; //每个循环要出啥子
int ans = 0;
for (int i = 0; i < n; i++)
ans += a[r[i%na]][s[i%nb]]; //模拟双方得分
cout << ans / 10000 << " " << ans % 10000;//得出单方得分
return 0;
}