C/C++编程学习 – 第5周 ④ 石头剪刀布「建议收藏」

C/C++编程学习 – 第5周 ④ 石头剪刀布「建议收藏」题目描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入格式输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0

大家好,又见面了,我是你们的朋友全栈君。

题目链接

题目描述

石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。

一天,小 A 和小 B 正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小 A 和小 B 比了 N 轮之后,谁赢的轮数多?

输入格式
输入包含三行。

第一行包含三个整数:
N,NA,NB,分别表示比了
N 轮,小 A 出拳的周期长度,小 B 出拳的周期长度。0<N,NA,NB<100。

第二行包含 NA 个整数,表示小 A 出拳的规律。

第三行包含 NB 个整数,表示小 B 出拳的规律。

其中,0 表示“石头”,2 表示“剪刀”,5 表示“布”。相邻两个整数之间用单个空格隔开。

输出格式
输出一行,如果小 A 赢的轮数多,输出”A”;如果小 B 赢的轮数多,输出”B”;如果两人打平,输出 “draw”。

提示
对于测试数据,猜拳过程为:

A:0 2 5 0 2 5 0 2 5 0

B:0 5 0 2 0 5 0 2 0 5

A 赢了 4 轮,B 赢了 2 轮,双方打平 4 轮,所以 A 赢的轮数多。

Sample Input

10 3 4
0 2 5
0 5 0 2

Sample Output

A

思路

模拟石头剪刀布的过程,可以写一个函数判断一下谁赢了。

C语言代码:

#include <stdio.h>
#include <math.h>
#include <string.h>
const long long N = 1e6 + 10;
long long n, m, cnt = 0, ans = 0, sum = 0;
long long is_a_win(long long a, long long b)//0石头 2剪刀 5布;//写个函数判断谁赢啦
{ 

if((a == 0 && b == 2) || (a == 2 && b == 5) || (a == 5 && b == 0)) return 1;//A赢啦
else if(a==b) return 0;//平手
else return -1;//B赢啦
}
int main()
{ 

long long a[N], b[N], A, B;
scanf("%lld %lld %lld",&n, &A, &B);
for(long long i = 0; i < A; i++)//录入A的规律
scanf("%lld", &a[i]);
for(long long i = 0; i < B; i++)//录入B的规律
scanf("%lld", &b[i]);
for(long long i = 0; i < n; i++)//模拟n场猜拳
{ 

long long nowa, nowb;//这一局,第i场
nowa = a[i % A];//A出的是nowa
nowb = b[i % B];//B出的是nowb
cnt += is_a_win(nowa, nowb);//a赢啦,cnt就加一,B赢啦,就减一
}
if(cnt > 0) printf("A");//cnt>0 说明A赢得多
else if(cnt < 0) printf("B");//cnt<0 说明B赢得多
else printf("draw");//cnt==0, 平手 
return 0;
}

C++代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{ 

int n, a, b, numa[105], numb[105];
while(cin >> n >> a >> b)
{ 

int A = 0, B = 0;
memset(numa, 0, sizeof(numa));
memset(numb, 0, sizeof(numb));
for(int i = 0; i < a; i++)
cin >> numa[i];
for(int i = 0; i < b; i++)
cin >> numb[i];
for(int i = 0; i < n; i++)
if((numa[i % a] == 0 && numb[i % b] == 2) || (numa[i % a] == 2 && numb[i % b] == 5) || (numa[i % a] == 5 && numb[i % b] == 0)) A++;
else if((numa[i % a] == 2 && numb[i % b] == 0) || (numa[i % a] == 5 && numb[i % b] == 2) || (numa[i % a] == 0 && numb[i % b] == 5)) B++;
if(A > B) cout << "A" << endl;
else if(A < B) cout << "B" << endl;
else if(A == B) cout << "draw" << endl;
}
return 0;
}

没有C语言基础的同学们,可以先学习一下C语言语法,我会整理好,后面发出来
我已经写好了,可以去C语言程序设计专栏第一周的内容

本周其他练习:

C语言程序设计专栏

C/C++编程学习 – 第5周 ① Hello World

C/C++编程学习 – 第5周 ② 向左看齐

C/C++编程学习 – 第5周 ③ 圆锥体的体积

C/C++编程学习 – 第5周 ④ 石头剪刀布

C/C++编程学习 – 第5周 ⑤ 人见人爱A+B

C/C++编程学习 – 第5周 ⑥ 四舍五入

C/C++编程学习 – 第5周 ⑦ 等差数列求和(1)

C/C++编程学习 – 第5周 ⑧ 判断直角三角形

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163853.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 原生JDBC连接数据库

    原生JDBC连接数据库JDBC概述概述JDBC(JavaDataBaseConnectivity,java数据库连接)是SUN公司开发的,一种用于执行SQL语句的JavaAPI JDBC是Java访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成 JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供…

  • dig命令

    dig命令

    2021年10月14日
  • linux配置虚拟ip_虚拟机静态ip

    linux配置虚拟ip_虚拟机静态ipLinux下配置网卡ip别名何谓ip别名?用windows的话说,就是为一个网卡配置多个ip。什么场合增加ip别名能派上用场?布网需要、多ip访问测试、特定软件对多ip的需要…andsoon.下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名。一、首先为服务器网卡配置静态ip地址#ifconfigeth0192.168.6.99netmask25…

    2022年10月20日
  • windows10查看硬盘是不是ssd_win10怎么看硬盘是不是固态

    windows10查看硬盘是不是ssd_win10怎么看硬盘是不是固态转自:http://www.w10zj.com/Win10xy/Win10yh_7732.html如何判断是否是ssd硬盘?在win10操作系统中我们该如何查看当前主机中安装的是固态硬盘还是机械硬盘

  • pycahrm 2021年激活码【中文破解版】

    (pycahrm 2021年激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsa…

  • java中异常的捕获及处理「建议收藏」

    一、Java异常简介什么是异常?程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。在Java中即,Java在编译或运行或者运行过程中出现的错误。Java提供了更加优秀的解决办法:异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号