问题标题: 酷町堂:3774猜拳游戏

1
1
叶佳慕
叶佳慕
初级守护
初级守护
#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


0
陈家傲
陈家傲
新手光能
新手光能

                                                                               

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0
0
阿巴
阿巴
资深守护
资深守护
#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

 

0
钟子然
钟子然
初级光能
初级光能

这贴也能被考古??

薛文博NB

0
毛润宇
毛润宇
新手天翼
新手天翼

这题有坑,就是不可以比较,它要对上才行,不可以枚举,会超时。

0
徐睿涵
徐睿涵
初级守护
初级守护

利用三个数,分别记录A胜次数,平局次数,B胜次数(B胜也就是A负次数)

比较三次:当A胜>B胜,输出A胜次数

                当B胜>A胜,输出B胜次数

                当A胜=B胜,输出A胜:平局:B胜(B胜也就等于A负

0
0
0
0
0
0
0
0
我要回答