#include<bits/stdc++.h>
using namespace std;
int a1,a2,a3,b1,b2,b3;
int main()
{
int a,b,l;
cin>>a>>b>>l;
int x[a+1],y[b+1],s1,s2;
for(int i=1;i<=a;i++)
cin>>x[i];
for(int i=1;i<=b;i++)
cin>>y[i];
for(int i=1;i<=l;i++)
{
s1=x[i%a];
s2=y[i%b];
if(s1==1&&s2==2)
b1++,a2++;
if(s1==s2)
b3++,a3++;
if(s1==1&&s2==3)
a1++,b2++;
if(s1==2&&a2==1)
b1++,a2++;
if(s1==2&&s2==3)
b2++,a1++;
if(s1=3&&s2==1)
b1++,a2++;
if(s1==3&&s2==2)
b2++,a1++;
}
if(a1>b1)
cout<<"A:"<<a1;
if(a1<b1)
cout<<"B:"<<b1;
if(a1==b1)
cout<<a1<<':'<<a3<<':'<<a2;
return 0;
}//0分
题目描述 Description
我们都知道猜拳游戏,现在我们的猜拳游戏是这样进行的,A和B的出拳是有规律的,即是按照一定规律进行循环,假设我们已知比赛的局数和A,B的循环规律,请你判断谁会获胜。规定如下:用1代表剪刀,2代表石头,3代表布。即1 > 3,2 > 1,3 > 2。例如:
A:1 2 3 1 2
B:2 3 1 2
如果总的比赛局数为10局,那么实际上A,B这10场对局的出拳方式如下所示:
A:1 2 3 1 2 1 2 3 1 2
B:2 3 1 2 2 3 1 2 2 3
那么A获胜的局数为3,平局为1局,B获胜的局数为6,因此比赛是B获胜
输入描述 Input Description
第一行,三个整数la,lb,l分别表示A的出拳循环长度,lb表示B的出拳循环长度,l表示总的比赛局数
第二行,la个数,表示A的出拳规律
第三行,lb个数,表示B的出拳规律
输出描述 Output Description
如果A赢,输出:A:赢的局数(不包含平局)
如果B赢,输出:B:赢的局数(不包含平局)
如果是平局,输出A胜平负的局数
样例输入 Sample Input
【输入样例1】
5 4 10
1 2 3 1 2
2 3 1 2
---------------------------------------------------
【输入样例2】
3 2 6
1 2 3
1 2
样例输出 Sample Output
【输出样例1】
B:6
---------------------------------------------------
【输出样例2】
2:2:2
#include <iostream>
using namespace std;
int a[5010], b[5010];//a数组---a的出拳规律b数组---b的出拳规律
int main(){
int ta,tb,n,ca=0,cb=0,cp=0;
cin>>ta>>tb>>n;
for(int i=0;i<ta;i++) cin>>a[i];
for(int i=0;i<tb;i++) cin>>b[i];
for(int i=0;i<n;i++){
int qa=a[i%ta];//a 本次出拳
int qb=b[ i%tb];//b本次出拳
//出拳进行比较
if( qa==1&&qb==3|| qa==qb+1) ca++;
else if(qb==1&&qa==3||qb==qa+1) cb++;
else cp++;
}
if(ca>cb) cout<<"A:"<<ca;
else if(ca<cb) cout<<"B:"<<cb;
else cout<<ca<<":"<<cp<<":"<<cb;//注意输出格式
return 0;
}//3774
利用三个数,分别记录A胜次数,平局次数,B胜次数(B胜也就是A负次数)
比较三次:当A胜>B胜,输出A胜次数
当B胜>A胜,输出B胜次数
当A胜=B胜,输出A胜:平局:B胜(B胜也就等于A负)