P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
题解
本题很简单,根据题目给出的胜负判定表填完整,然后if或者switch判断就可以了。
#include <iostream>
#include <cstdio>
void getQueue(int* q, int len);
int judgeWinner(int a, int b);
int main()
{
int n, la, lb;
int sa = 0, sb = 0;
scanf("%d %d %d", &n, &la, &lb);
int qa[201] = { 0 };
int qb[201] = { 0 };
getQueue(qa, la);
getQueue(qb, lb);
for (int i = 0; i < n; i++)
{
int tmp = judgeWinner(qa[i % la], qb[i % lb]);
if (tmp == 1)
{
sa++;
}
else if (tmp == -1)
{
sb++;
}
}
printf("%d %d", sa, sb);
}
int judgeWinner(int a, int b)
{
//printf("a: %d\n", a);
//printf("b: %d\n", b);
if (a == b)
return 0; //平局
else
{
if (a == 0 && (b != 1 && b != 4))
return 1; //a胜利
if (a == 1 && (b != 2 && b != 4))
return 1;
if (a == 2 && (b != 0 && b != 3))
return 1;
if (a == 3 && (b != 0 && b != 1))
return 1;
if (a == 4 && (b != 2 && b != 3))
return 1;
}
return -1;
}
void getQueue(int *q, int len)
{
for (int i = 0; i < len; i++)
{
scanf("%d", &q[i]);
}
}