openjudge 1.6.8 石头剪刀布

OpenJudge - 08:石头剪刀布


解题思路:

1.由题可知,两个人的出拳是有规律的,并且是按照一定的周期性,一想到周期问题便要想到模运算%

2.输入有三行,第一行为三个整数,分别代表轮数和小A的出拳规律和小B的出拳规律,分别定义为N,NA,NB,需要用两个数组来分别存两个人的出拳 int a[105],b[105];

3.输入NA和NB后,分别创建对应的循环,来存入他们的出拳数字,从数组下标0开始存入

4.创建从0到N-1的循环,因为NA和NB的出拳数字我们是已知的,所以利用模运算将后面的出拳规律补齐

5.补齐之后,创建0到N-1的循环,依次将a[i]和b[i]作比较,如果小A赢,那么sumA++,如果小B赢,sumB++

6.最后对sumA和sumB判断,输出对应的内容 


#include<bits/stdc++.h>
using namespace std;
int a[105],b[105];//分别用来存放小A和小B的出拳数字 
int main()
{
	int n,len_a,len_b,suma=0,sumb=0;//定义两个人的出拳周期长度 
	cin>>n>>len_a>>len_b;

	for(int i=0;i<len_a;i++)
	cin>>a[i];//输入小A出拳的数字 

	for(int j=0;j<len_b;j++)
	cin>>b[j];//输入小B出拳的数字 

	for(int i=0;i<n;i++)//将小A小B的出拳数字补齐 
	{
		a[i]=a[i%len_a];
		b[i]=b[i%len_b];
	}

	for(int i=0;i<n;i++)//遍历n长比赛 
	{
		if((a[i]==0&&b[i]==2)||(a[i]==2&&b[i]==5)||(a[i]==5&&b[i]==0))
		suma++;//如果符合上述情况,小A赢 
		else if(a[i]==b[i])//如果相等,则,继续 
		continue;
		else//如果都不符合上述情况,则小B赢 
		sumb++;
	}

	if(suma>sumb)//如果A赢的次数多 
	cout<<"A";//输出A 
	else if(suma<sumb)//如果B赢的次数多 
	cout<<"B";//输出B 
	else
	cout<<"draw";//否则输出相等 
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值