30分,求助,不是很能想清楚
查看原帖
30分,求助,不是很能想清楚
381510
yljx楼主2022/7/28 11:39
#include<bits/stdc++.h>
using namespace std;
int rule[10][10]={{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}};
// rule[a][b]代表小a出a,小b出b的胜负结果
int n,na,nb;
int a[210],b[210];

int main(){
	freopen("in.cpp","r",stdin);
	cin>>n>>na>>nb;
	a[0]=na; b[0]=nb;
	for(int i=1;i<=na;i++)cin>>a[i];
	for(int i=1;i<=nb;i++)cin>>b[i];
	for(int i=1;i<=200;i++){//将小a的周期性出拳复制进a数组,把小a的所有出拳记录
		if(a[0]+na<=n){
			for(int j=a[0]+1;j<=a[0]+na;j++) a[j]=a[j-a[0]];
			a[0]+=na;
		}else{
			for(int j=a[0]+1;j<=n;j++) a[j]=a[j-a[0]];
			break;
		}
	}
	for(int i=1;i<=200;i++){//同上
		if(b[0]+nb<=n){
			for(int j=b[0]+1;j<=b[0]+nb;j++) b[j]=b[j-b[0]];
			b[0]+=nb;
		}else{
			for(int j=b[0]+1;j<=n;j++) b[j]=b[j-b[0]];
			break;
		}
	}	
	int ans1=0,ans2=0;
	for(int i=1;i<=n;i++){//记录结果
		if(rule[a[i]][b[i]]==-1)ans2++;//小a出a[i],小b出b[i]的胜负结果
		if(rule[a[i]][b[i]]==1)ans1++;
	}
	cout<<ans1<<" "<<ans2;
}
2022/7/28 11:39
加载中...