求调
查看原帖
求调
1251525
wisdom2010楼主2024/7/17 20:56
//0 表示 剪刀,1 表示 石头,2 表示 布,3 表示 蜥蜴人,4 表示 斯波克
#include<bits/stdc++.h>
using namespace std;
const int maxn = 200 + 10;
int a[maxn], b[maxn];
int n, na, nb;
int c[maxn];
int cnt = 0;
int ans1 = 0, ans2 = 0, ansa = 0, ansb = 0;
int gcd(int a, int b)
{
	if(b == 0)
		return a;
	return gcd(b, a % b);
}
int lcd(int a, int b)
{
	return a * b / gcd(a, b);
}
int main()
{
	scanf("%d%d%d", &n, &na, &nb);
	for(int i = 0; i < na; i++)
		scanf("%d", &a[i]);
	for(int i = 0; i < nb; i++)
		scanf("%d", &b[i]);
	int ab = lcd(na, nb);
	//if(n <= ab)
	//{
		for(int i = 0; i < ab; i++)
		{
			int x, y;
			x = y = i;
			if(x > na - 1)
				x %= na;
			if(y > nb - 1)
				y %= nb - 1;
			//0 表示 剪刀,1 表示 石头,
			//2 表示 布,3 表示 蜥蜴人,
			//4 表示 斯波克
			if(a[x] == b[y])
			{
				c[cnt] = 0;
				cnt++;
				continue;
			}
			if(a[x] == 0 && (b[y] == 2 || b[y] == 3))
			{
				c[cnt] = 1;
				ansa++;
				cnt ++;
				continue;
			}
			if(a[x] == 1 && (b[y] == 3 || b[y] == 0))
			{
				c[cnt] = 1;
				ansa++;
				cnt++;
				continue;
			}
			if(a[x] == 2 && (b[y] == 1 || b[y] == 4))
			{
				c[cnt] = 1;
				ansa++;
				cnt++;
				continue;
			}
			if(a[x] == 3 && (b[y] == 2 || b[y] == 4))
			{
				c[cnt] = 1;
				ansa++;
				cnt++;
				continue;
			}
			if(a[x] == 4 && (b[y] == 0 || b[y] == 1))
			{
				c[cnt] = 1;
				ansa++;
				cnt++;
				continue;
			}
			else
			{
				c[cnt] = -1;
				ansb++;;
				cnt++;
				continue;
			}
		}
	//}
	if(n <= ab)
	{
		for(int i = 0; i < n; i++)
		{
			if(c[i] == 1)
				ans1 ++;
			else
				ans2++;
		}
		printf("%d %d", ans1, ans2);
		return 0;
	}
	if(n > ab)
	{
		int zs, ys;
		zs = n / ab;
		ys = n % ab;
		for(int i = 0; i < ys; i++)
		{
			if(c[i] == 1)
				ans1++;
			else
				ans2++;
		}
		printf("%d %d", ansa * zs + ans1, ansb * zs + ans2);
		return 0;
	}
}
2024/7/17 20:56
加载中...