P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布————C++

目录

  • [NOIP2014 提高组] 生活大爆炸版石头剪刀布
    • 题目背景
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 样例 #2
      • 样例输入 #2
      • 样例输出 #2
    • 提示
  • 解题思路
  • Code
  • 调用函数的Code(看起来简洁一点)
  • 运行结果

[NOIP2014 提高组] 生活大爆炸版石头剪刀布

题目背景

NOIP2014 提高组 D1T1

题目描述

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

现在,小 A 和小 B 尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小 A 以 石头-布-石头-剪刀-蜥蜴人-斯波克 长度为 6 6 6 的周期出拳,那么他的出拳序列就是 石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-...,而如果小 B 以 剪刀-石头-布-斯波克-蜥蜴人 长度为 5 5 5 的周期出拳,那么他出拳的序列就是 剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-...

已知小 A 和小 B 一共进行 N N N 次猜拳。每一次赢的人得 1 1 1 分,输的得 0 0 0 分;平局两人都得 0 0 0 分。现请你统计 N N N 次猜拳结束之后两人的得分。

输入格式

第一行包含三个整数: N , N A , N B N,N_A,N_B N,NA,NB,分别表示共进行 N N N 次猜拳、小 A 出拳的周期长度,小 B 出拳的周期长度。数与数之间以一个空格分隔。

第二行包含 N A N_A NA 个整数,表示小 A 出拳的规律,第三行包含 N B N_B NB 个整数,表示小 B 出拳的规律。其中, 0 0 0 表示 剪刀 1 1 1 表示 石头 2 2 2 表示 3 3 3 表示 蜥蜴人 4 4 4 表示 斯波克。数与数之间以一个空格分隔。

输出格式

输出一行,包含两个整数,以一个空格分隔,分别表示小 A、小 B 的得分。

样例 #1

样例输入 #1

10 5 6
0 1 2 3 4
0 3 4 2 1 0

样例输出 #1

6 2

样例 #2

样例输入 #2

9 5 5
0 1 2 3 4
1 0 3 2 4

样例输出 #2

4 4

提示

对于 100 % 100\% 100% 的数据, 0 < N ≤ 200 , 0 < N A ≤ 200 , 0 < N B ≤ 200 0 < N \leq 200, 0 < N_A \leq 200, 0 < N_B \leq 200 0<N200,0<NA200,0<NB200

解题思路

  • 模拟。
  • 首先读懂题目含义。
数字代表含义
0剪刀
1石头
2
3蜥蜴人
4斯波克
  • 0输1、4;0赢2、3,。
  • 1输2、4;1赢0、3,。
  • 2输0、3;2赢1、4,。
  • 3输0、1;3赢2、4,。
  • 4输2、3;4赢0、1。

Code

#include<iostream>

using namespace std;

int n, na, nb;
int ans_a, ans_b;
int nums_na[205], nums_nb[205];



int main() {
	// 输入数据
	cin >> n >> na >> nb;
	for (int i = 0; i < na; i++) {
		cin >> nums_na[i];
	}
	for (int j = 0; j < nb; j++) {
		cin >> nums_nb[j];
	}
	// 处理数据并输出结果
	for (int i = 0; i < n; i++) {
		int a = nums_na[i % na];
		int b = nums_nb[i % nb];
		if (a == b) continue;
		else if (a == 0 && (b == 1 || b == 4)) ans_b++;
		else if (a == 0 && (b == 2 || b == 3)) ans_a++;
		else if (a == 1 && (b == 2 || b == 4)) ans_b++;
		else if (a == 1 && (b == 0 || b == 3)) ans_a++;
		else if (a == 2 && (b == 0 || b == 3)) ans_b++;
		else if (a == 2 && (b == 1 || b == 4)) ans_a++;
		else if (a == 3 && (b == 0 || b == 1)) ans_b++;
		else if (a == 3 && (b == 2 || b == 4)) ans_a++;
		else if (a == 4 && (b == 2 || b == 3)) ans_b++;
		else if (a == 4 && (b == 0 || b == 1)) ans_a++;
	}
	cout << ans_a << " " << ans_b << endl;
	return 0;
}

调用函数的Code(看起来简洁一点)

#include<iostream>

using namespace std;

int n, na, nb;
int ans_a, ans_b;
int nums_na[205], nums_nb[205];
int* ans = new int[5];

// 判断石头剪刀布大小并计算得分的函数;
int* judge(int a, int b, int res_a = 0, int res_b = 0) {
	if (a == 0 && (b == 1 || b == 4)) res_b = 1;
	else if (a == 0 && (b == 2 || b == 3)) res_a = 1;
	else if (a == 1 && (b == 2 || b == 4)) res_b = 1;
	else if (a == 1 && (b == 0 || b == 3)) res_a = 1;
	else if (a == 2 && (b == 0 || b == 3)) res_b = 1;
	else if (a == 2 && (b == 1 || b == 4)) res_a = 1;
	else if (a == 3 && (b == 0 || b == 1)) res_b = 1;
	else if (a == 3 && (b == 2 || b == 4)) res_a = 1;
	else if (a == 4 && (b == 2 || b == 3)) res_b = 1;
	else if (a == 4 && (b == 0 || b == 1)) res_a = 1;
	ans[0] = res_a;
	ans[1] = res_b;
	return ans;
}

int main() {
	// 输入数据
	cin >> n >> na >> nb;
	for (int i = 0; i < na; i++) {
		cin >> nums_na[i];
	}
	for (int j = 0; j < nb; j++) {
		cin >> nums_nb[j];
	}
	// 处理数据并输出结果
	for (int i = 0; i < n; i++) {
		int* b =  judge(nums_na[i % na], nums_nb[i % nb], 0, 0);
		ans_a += b[0];
		ans_b += b[1];
	}
	cout << ans_a << " " << ans_b << endl;
	return 0;
}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/311930.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tensorflow2.0笔记 - Tensor的数据索引和切片

主要涉及的了基础下标索引"[]",逗号",",冒号":",省略号"..."操作&#xff0c;以及gather,gather_nd和boolean_mask的相关使用方法。 import tensorflow as tf import numpy as nptf.__version__tensor tf.random.uniform([1,5,5,3],…

if单分支,二分支,多分支,语句嵌套,while语句,for语句(Python实现)

一、主要目的&#xff1a; 1&#xff0e;熟悉程序设计结构的三种方式 2.掌握if单分支语句、if二分支语句、if多分支语句及if语句嵌套的使用方法 3.掌握while语句的使用方法 4.掌握for语句的使用方法 5.掌握循环嵌套的使用方法 二、主要内容和结果展现&#xff1a; 1&…

国产ULN2803达林顿驱动芯片为什么可兼容TI ULN2803A的参数特性分享,且可用于红外摄像机等产品中

随着安防视频监控系统工程的需求越来越广&#xff0c;销量也与日俱增。在红外摄像机的红外LED驱动电路应用中&#xff0c;驱动大多数选用达林顿驱动芯片&#xff0c;行业上有用到TI 的ULN2803A&#xff0c;在目前行情&#xff0c;国外芯片紧缺的情况下&#xff0c;不少企业会多…

第一次作业

作业一&#xff1a;安装Euler系统&#xff1a; 和以前安装红帽没多大差别&#xff0c;看以前文章就行 作业二&#xff1a;通过两台Linux主机怕配置ssh实现互相免密登录&#xff1a; 1. 客户端地址&#xff1a;192.168.146.131 服务器地址&#xff1a; 192.168.146.129 1、…

Spacedesk | 最新版本移动端扩展PC副屏

我的设备&#xff1a; 电脑:戴尔G15 5511、i7-11800H、Windows 11、RTX3060&#xff08;推荐显卡高级一些&#xff0c;算力差点的可能带不动这款软件&#xff09; 平板&#xff1a;荣耀V6、麒麟985、安卓10、分辨率2000*1200&#xff08;手机也行&#xff0c;我用的平板&…

纯前端 —— 200行JS代码、实现导出Excel、支持DIY样式,纵横合并

前期回顾 Vue3 TS Element-Plus 封装Tree组件 《亲测可用》_vue3ts 组件封装-CSDN博客https://blog.csdn.net/m0_57904695/article/details/131664157?spm1001.2014.3001.5501 目录 具体思路&#xff1a; 1. 准备HTML结构 2. 定义CSS样式 3. 初始化表格数据 4. 创建表…

【K8S 存储卷】K8S的存储卷+PV/PVC

目录 一、K8S的存储卷 1、概念&#xff1a; 2、挂载的方式&#xff1a; 2.1、emptyDir&#xff1a; 2.2、hostPath&#xff1a; 2.3、NFS共享存储&#xff1a; 二、PV和PVC&#xff1a; 1、概念 2、请求方式 3、静态请求流程图&#xff1a; 4、PV和PVC的生命周期 5、…

鸿蒙Harmony--状态管理器--@Provide装饰器和@Consume装饰器详解

今天是1月11日号星期四&#xff0c;农历腊月初一&#xff0c;辞旧的岁月里&#xff0c;愿你守得云开、终见月明&#xff0c;迎新的时光中&#xff0c;愿你心御寒冬、顺遂无忧&#xff0c;岁末冬深&#xff0c;希望接下来的日子里足够幸运&#xff0c;攒足勇气、信心和运气&…

2024年1月1日孙溟㠭篆刻艺术展开幕式于北京大学北大书店成功举办

“印记青春——会说话的石头” 主题文化展盛大开幕 2024年1月1日正值新年伊始&#xff0c;由北京大学出版社、北大书店、不黑文化艺术学社、中国诗书画研究会三才书画院联合举办的“印记 青春——会说话的石头”主题篆刻艺术展&#xff0c;在北京大学新太阳学生中心拉开帷幕。 …

深度学习”和“多层神经网络”的区别

在讨论深度学习与多层神经网络之间的差异时&#xff0c;我们必须首先理解它们各自是什么以及它们在计算机科学和人工智能领域的角色。 深度学习是一种机器学习的子集&#xff0c;它使用了人工神经网络的架构。深度学习的核心思想是模拟人脑神经元的工作方式&#xff0c;以建立…

tailwindcss真的好用吗?

写在前面 今天写一篇关于tailwindcss 的文章&#xff0c;其实这个css技术已经出现很久了&#xff0c;在一些大型项目很多人也已经在用了&#xff0c;虽然不是说必须要会吧&#xff0c;但是没听说过肯定是不行的&#xff0c;他的操作逻辑应该是和unocss差不多&#xff0c;但是今…

【UE Niagara学习笔记】07 - 火焰的热变形效果

目录 效果 步骤 一、创建热变形材质 二、添加新的发射器 2.1 设置粒子材质 2.2 设置粒子初始大小 2.3 设置粒子持续生成 三、修改材质 四、设置粒子效果 在上一篇博客&#xff08;【UE Niagara学习笔记】06 - 制作火焰喷射过程中飞舞的火星&#xff09;的基础上继续…

[力扣 Hot100]Day2 字母异位词分组

题目描述 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 出处 思路 这题有点考阅读理解&#xff0c;意思就是把输入数组中的所含字母相同但顺序不同的单词放到同…

主动学习基础-贝叶斯神经网络

引言 传统的深度神经网络一般都有过度自信的问题。 即使我给神经网络提供一个从来没有训练过的类别图像&#xff0c;神经网络也会输出一个类别。比如训练猫狗的分类器&#xff0c;如果你抛出一个人的图像&#xff0c;网络也会将其分类为猫或者狗。 在几乎所有现实世界的问题中…

Netty通信中的粘包半包问题(一)

前言 我们在日常开发过程中&#xff0c;客户端和服务端的连接大多使用的是TCP协议,因为我们要保证数据的可靠传输&#xff0c; 当网络中出现丢包时要求&#xff0c;要求数据包的发送端重传给接收端。而TCP是一种面向连接的传输层协议&#xff0c; 当使用TCP进行传输时&#xf…

YOLOv5改进有效涨点目录 | 包含卷积、主干、检测头、注意力机制、Neck上百种创新机制

⭐ YOLOv5改进有效系列目录 ⭐ 前言 Hello&#xff0c;各位读者们好 本专栏自开设一个月以来已经更新改进教程70余篇其中包含C2f、主干、检测头、注意力机制、Neck多种结构上创新&#xff0c;也有损失函数和一些细节点上的创新。同时本人一些讲解视频和包含我所有创新的YOLO…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑥

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷6 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷6 模块一…

MySQL:DML数据操作语言(添加,删除,修改),DDL数据查询语言(条件查询,分组查询,排序查询,分页查询)

目录 1.DML&#xff08;数据操作语言&#xff09;1.添加数据2.修改数据3.删除数据 2.DQL(数据查询语言)1.DQL-语法2.基本查询3.条件查询(WHERE)1.语法&#xff1a;2.条件&#xff1a;3.案例: 4.聚合函数1.介绍2.常见聚合函数3.语法4.案例 5.分组查询&#xff08;GROUP BY&#…

Proteus仿真stm32f103r6输出PWM/正弦波

资料下载地址&#xff1a;Proteus仿真stm32f103r6输出PWM/正弦波 一、仿真图 Proteus仿真stm32f103r6输出PWM/正弦波 二、程序 #include "pbdata.h"u16 fre; void RCC_Configuration(void); void GPIO_Configuration(void); void TIM3_Configuration();void Dela…

SpringBoot项目docker镜像生成

1. 本文思路 拉取基础镜像基于镜像创建容器在容器中&#xff0c;安装所需依赖部署脚本提交容器&#xff0c;生成新的镜像编写Dockerfile&#xff0c;添加启动命令&#xff0c;生成最终镜像导出镜像 2. 操作步骤 2.1 基础环境 # 拉取镜像 docker pull centos:7.6.1810 # 运行…