大佬帮忙看看吧。。。
查看原帖
大佬帮忙看看吧。。。
69390
平Jo裤平Jo裤楼主2020/8/18 20:30

一年没打OI连橙题都切不了了QAQ

我思路很脑瘫就是把每种输赢情况列举出来

然后一一对比谁赢谁加一分

对于周期我取了一个模来处理

可是只有40分 Holly Sh*t

能康康哪里错了吗~

代码:

#include <bits/stdc++.h>
using namespace std;

const int MAX_N = 205;
int N, Na, Nb;     // 总局数, A周期, B周期 
int Ra[MAX_N], Rb[MAX_N];    // A出拳, B出拳 
int Pa, Pb;       //A的分数, B的分数

inline int cmp(int a, int b)     //0剪刀, 1石头, 2布, 3蜥蜴人, 4斯波克 
{
	if(a == 0)     //剪刀
	{
		if(b == 0) return 2;
		if(b == 1) return -1;
		if(b == 2 || b == 3 || b == 4) return 1;
	}
	if(a == 1)     //石头 
	{
		if(b == 0 || b == 3) return 1;
		if(b == 1) return 2;
		if(b == 2 || b == 4) return -1;
	}
	if(a == 2)     //布
	{
		if(b == 0 || b == 3) return -1;
		if(b == 2) return 2;
		if(b == 1 || b == 4) return 1;
	} 
	if(a == 3)     //蜥蜴人 
	{
		if(b == 3) return 2;
		if(b == 0 || b == 1) return -1;
		if(b == 4 || b == 2) return 1;
	}
	if(a = 4)      //斯波克
	{
		if(b == 4) return 2;
		if(b == 0 || b == 1) return 1;
		if(b == 2 || b == 3) return -1;
	}
}

int main()
{
	cin >> N >> Na >> Nb;
	for(int i = 0; i < Na; i++)
	{
		cin >> Ra[i];
	}
	
	for(int i = 0; i < Nb; i++)
	{
		cin >> Rb[i];
	}
	
	for(int i = 0; i < N; i++)
	{
		if(cmp(Ra[i % Na], Rb[i % Nb]) == 1) Pa ++;    //a 赢的情况 
		if(cmp(Ra[i % Na], Rb[i % Nb]) == -1) Pb ++;   //b 赢的情况
	}
	
	cout << Pa << " " << Pb << endl;
	return 0;
}

蟹蟹!

2020/8/18 20:30
加载中...