洛谷P8799 [蓝桥杯 2022 国 B] 齿轮 C语言/C++
[蓝桥杯 2022 国 B] 齿轮
题目描述
这天,小明在组装齿轮。
他一共有 nnn 个齿轮,第 iii 个齿轮的半径为 rir_{i}ri, 他需要把这 nnn 个齿轮按一定顺序从左到右组装起来,这样最左边的齿轮转起来之后,可以传递到最右边的齿轮,并且这些齿轮能够起到提升或者降低转速(角速度)的作用。

小明看着这些齿轮,突然有 QQQ 个疑问: 能否按一定顺序组装这些齿轮使得最右边的齿轮的转速是最左边的齿轮的 qiq_{i}qi 倍?
输入格式
输入共 Q+2Q+2Q+2 行,第一行为两个正整数 n,Qn, Qn,Q, 表示齿轮数量和询问数量。
第二行为 nnn 个正整数 r1,r2,…,rnr_{1}, r_{2}, \ldots, r_{n}r1,r2,…,rn,表示每个齿轮的半径。
后面 QQQ 行,每行一个正整数 qiq_{i}qi 表示询问。
输出格式
QQQ 行,对于每个询问,如果存在至少一种组装方案满足条件,输出 YES, 否则输出 NO。
样例 #1
样例输入 #1
5 3
4 2 3 3 1
2
4
6
样例输出 #1
YES
YES
NO
提示
【样例说明】
询问 111 方案之一:23341。
询问 222 方案之一:42331。
询问 333 没有方案。
【评测用例规模与约定】
对于 15%15 \%15% 的数据,保证 n,Q≤100n, Q \leq 100n,Q≤100;
对于 30%30 \%30% 的数据,保证 n,Q≤2000n, Q \leq 2000n,Q≤2000;
对于 100%100 \%100% 的数据,保证 n,Q≤2×105;ai,qi≤2×105n, Q \leq 2 \times 10^{5} ; a_{i}, q_{i} \leq 2 \times 10^{5}n,Q≤2×105;ai,qi≤2×105。
蓝桥杯 2022 国赛 B 组 I 题。
所需变量
int n;//代表n个齿轮的大小
int Q;//代表询问的次数
int arr[200005] = {0};//用于存储每个齿轮的大小
int control = 0;//1代表1倍是否存在
int i,j;//循环变量
int temp;//用于接收每个齿轮大小,然后再存入进去
int min = 0;//代表齿轮的最小大小
int max = 0;//代表齿轮的最大大小
int q[200005];//代表每次询问的齿轮大小
int control2 = 0;//代表后面是否存在,如果不存在那么control2就是0,就输出NO,否则就输出YES
思路:我们要知道齿轮转动倍数跟中间那些齿轮半径都没有关系,只跟最开始和最后那个有关系,如果是k倍,我们只需要最后那个齿轮的半径是最开始那个的k倍就能满足题目所需要求!
因此首先我们将每个数都存入进去,然后再arr数组中,我们分别用下标表示这个齿轮的半径,如果存在我们就把arr[i]赋值为1,如果这个数已经存在,在遇到一个相同的,我们就将control赋值为1!代码如下:
for(i = 0;i<n;i++){cin>>temp;if(temp<min){min = temp;}if(temp>max){max = temp;}if(arr[temp] == 1){control = 1;continue;}arr[temp] = 1;
}
得到每个齿轮半径后,我们Q次询问每次询问就是看这个数的关于q[i]的倍数是否存在(即为1),如果存在就输出YES,否则就输出NO,代码如下:
for(i = 1;i<=Q;i++){control2 = 0;if(q[i] == 1){if(control == 1){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}else{for(j = min;j<=(max/q[i])+1;j++){if(arr[j] == 0){continue;}if(arr[j*q[i]] == 1){cout<<"YES"<<endl;control2 = 1;break; }}if(control2 == 0){cout<<"NO"<<endl;}}}
完整代码如下(有错):
#include<iostream>
using namespace std;
int main(){int n,Q,arr[200005] = {0},control = 0,i,j,temp,min = 0,max = 0,q[200005],control2 = 0;cin>>n>>Q;for(i = 0;i<n;i++){cin>>temp;if(temp<min){min = temp;}if(temp>max){max = temp;}if(arr[temp] == 1){control = 1;continue;}arr[temp] = 1;}for(i = 1;i<=Q;i++){cin>>q[i];}for(i = 1;i<=Q;i++){control2 = 0;if(q[i] == 1){if(control == 1){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}else{for(j = min;j<=(max/q[i])+1;j++){if(arr[j] == 0){continue;}if(arr[j*q[i]] == 1){cout<<"YES"<<endl;control2 = 1;break; }}if(control2 == 0){cout<<"NO"<<endl;}}}return 0;
}

后面这个逻辑是没有问题的,但是对于有些测试点出现RE,然后在测试过程中发现是我数组定义小了,后面我们将arr数组扩大十倍,就通过了!
正确答案:
#include<iostream>
using namespace std;
int main(){int n,Q,arr[2000005] = {0},control = 0,i,j,temp,min = 0,max = 0,q[2000005],control2 = 0;cin>>n>>Q;for(i = 0;i<n;i++){cin>>temp;if(temp<min){min = temp;}if(temp>max){max = temp;}if(arr[temp] == 1){control = 1;continue;}arr[temp] = 1;}for(i = 1;i<=Q;i++){cin>>q[i];}for(i = 1;i<=Q;i++){control2 = 0;if(q[i] == 1){if(control == 1){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}else{for(j = min;j<=(max/q[i])+1;j++){if(arr[j] == 0){continue;}if(arr[j*q[i]] == 1){cout<<"YES"<<endl;control2 = 1;break; }}if(control2 == 0){cout<<"NO"<<endl;}}}return 0;
}

相关文章:
洛谷P8799 [蓝桥杯 2022 国 B] 齿轮 C语言/C++
[蓝桥杯 2022 国 B] 齿轮 题目描述 这天,小明在组装齿轮。 他一共有 nnn 个齿轮,第 iii 个齿轮的半径为 rir_{i}ri, 他需要把这 nnn 个齿轮按一定顺序从左到右组装起来,这样最左边的齿轮转起来之后,可以传递到最右边的齿轮&a…...
景区在线售票系统功能开发介绍
目前游客线上订票已经普及,景区开通线上购票渠道,方便游客购票,对于还没有开通线上购票的景区来说,需要提前了解一下景区线上售票系统的一些功能,下面给大家详细介绍一下景区在线售票需要哪些功能。 1、在线售票 包含门…...
webService的底层调用方式
webservice中采用协议Http,是指什么意思 WebService使用的是 SOAP (Simple Object Access Protocol)协议 Soap协议只是用来封装消息用的。封装后的消息你可以通过各种已有的协议来传输,比如http,tcp/ip,smtp,等等,你甚至还一次用自定义的协议…...
关于文件的一些小知识下
🍍个人主页🍍:🔜勇敢的小牛儿🚩 🔱推荐专栏🔱:C语言知识点 ⚠️座右铭⚠️:敢于尝试才有机会 🐒今日鸡汤🐒: 你受的苦 吃的亏 担的责 扛的罪 忍的…...
使用Cheat Engine与DnSpy破解Unity游戏
题目连接: https://play.picoctf.org/practice/challenge/361?originalEvent72&page3我们是windows系统,所以点击windows game下载游戏 双击运行pico.exe 屏幕上方的一串英文是叫我们找flag,我在这个小地图里走来走去也没flagÿ…...
溯源取证-内存取证基础篇
使用工具: volatility_2.6_lin64_standalone 镜像文件: CYBERDEF-567078-20230213-171333.raw 使用环境: kali linux 2022.02 我们只有一个RAW映像文件,如何从该映像文件中提取出我们想要的东西呢? 1.Which volatili…...
Leetcode.100 相同的树
题目链接 Leetcode.100 相同的树 easy 题目描述 给你两棵二叉树的根节点 p和 q,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3…...
每个程序员都应该知道的8大算法
在编程开发中,算法是用于解决特定问题或完成特定任务的一组指令或过程。算法可以用任何编程语言表示,可以像一系列基本操作一样简单,也可以像涉及不同数据结构和逻辑的多步骤过程一样复杂。 算法的主要目标是接收输入、处理它并提供预期的输…...
Nestjs实战超干货-概况-模块-Modules
模块 模块就是一个声明了装饰器Module()的类。装饰器Module()提供了元数据,以便让Nest组织应用程序结构。 每个应用程序至少有一个模块,即根模块。根模块是 Nest 用来构建应用程序图的起点,应用程序图是 Nest 用来解析模块和提供者关系和依赖…...
template
模板 模板注意事项 模板的函数体和声明一定要在一起,即放在同一个.h文件中,而不能将其分开到cpp和h文件中模板的编译技巧就是尽量多编译,模板很难查找错误模板的报错一般只有第一行有作用模板指定类型从左到右依次指定 模板推导 #pragma #…...
innovus中时序路径debug及命令使用详解?
写在前面:发现place结果所有与outport相关的timing check都找不到? 刚开始怀疑是sdc约束问题,check了input sdc文件及enc.dat/mmmc/mode/func.sdc 看一下是否设置了set_false_path.当然也可以用命令报出来: report_timing -unconstrained …...
C语言爱心代码大全集—会Ctrl+C就可以表白了
一、C语言爱心代码大全,会CtrlC就可以表白了! 博主整理了一个C语言爱心代码大全,里面有C语言爱心代码会动的动态效果和C语言爱心代码大全静态效果,只需复制粘贴就可以用啦! 1、动态C语言爱心代码效果图如下ÿ…...
python+vue+django耕地信息管理系统的设计与实现
基普通用户模块含有个人中心、耕地信息管理、转让许可申请管理、租赁许可申请管理等功能;普通管理员模块含有个人中心、用户管理、公示公告管理、耕地信息管理、耕地信息统计、转让许可申请管理、租赁许可申请管理、转让协议管理、租赁协议管理等功能;管…...
【云原生】Dockerfile制作WordPress镜像,实现compose编排部署
文章目录👹 关于作者前言环境准备目录结构dockerfile制作镜像yum 脚本Dockerfile-mariadb 镜像Dockerfile-service 镜像docker compose 编排提升✊ 最后👹 关于作者 大家好,我是秋意临。 😈 CSDN作者主页 😎 博客主页…...
五款好用又有趣的WIN10软件推荐
如果你想让你的电脑使用更方便、更有趣、更专业,那么你一定要看看这篇文章,因为我要给你推荐五款好用又有趣的WIN10软件 1.全局搜索——火柴 火柴是一款全局搜索软件,可以让你快速找到你想要的文件、程序、网页等,只需按下AltSp…...
朴素贝叶斯算法
# -*-coding:utf-8-*- """ Author: sunchang Desc: 代码4-7 朴素贝叶斯实现对异常账户检测 """ import numpy as np class NaiveBayesian: def __init__(self, alpha): self.classP dict() self.classP_f…...
【常见CSS扫盲雪碧图】从源码细看CSS雪碧图原理及实现,千字详解【附源码demo下载】
【写在前面】其实估计很多人都听过雪碧图,或者是CSS-Sprite,在很多门户网站就会经常有用到的,之所有引出雪碧图这个概念还得从前端加载多个图片时候页面闪了一下说起,这样给人的视觉效果体验很差,也就借此机会和大家说…...
Java多线程:ThreadLocal源码剖析
ThreadLocal源码剖析 ThreadLocal其实比较简单,因为类里就三个public方法:set(T value)、get()、remove()。先剖析源码清楚地知道ThreadLocal是干什么用的、再使用、最后总结,讲解ThreadLocal采取这样的思路。 三个理论基础 在剖析ThreadLo…...
96、数据的存储
运行实例: 在debug和release两种模式下,进行代码运行,debug下 i 的地址是大于arr[9] 的地址的,release 下i 的地址是小于arr[9] 的地址。原因是:release状态进行了优化处理。 C语言中基本的内置类型 整形数据类型 char …...
@EventListener注解详细使用(IT枫斗者)
EventListener注解详细使用 简介 EventListener是一种事件驱动编程在spring4.2的时候开始有的,早期可以实现ApplicationListener接口, 为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式;为的就是业务系统逻辑的解耦,提高…...
软件测试员转型AI测试:机遇与挑战全解析
技术浪潮下的必然选择在人工智能技术席卷全球的浪潮中,软件测试领域正经历前所未有的变革。2026年数据显示,AI在测试行业的渗透率已超40%,新发AI测试岗位量同比增长543%,薪资溢价高达18%。这一趋势迫使测试从业者直面转型抉择&…...
Qwen3-Embedding国产化部署
从单一型人才到AI带领下的复合型人才 1.1 传统职能的终结 传统软件公司怎么干的? 销售、售前、交付、研发、市场、运维——各司其职,职能清晰。看起来很专业,但实际上是什么?一堆冗余的角色在等活干。 这不是高效,这是…...
从一道经典OJ题出发:详解二叉树‘凹入表示法’的输出技巧与C++实现
从一道经典OJ题出发:详解二叉树‘凹入表示法’的输出技巧与C实现 1. 凹入表示法的独特魅力与实现挑战 在算法竞赛和数据结构面试中,二叉树的输出格式往往成为区分选手水平的关键细节。不同于常见的层序遍历或图形化展示,凹入表示法࿰…...
AI赋能Spring开发:借助快马平台快速集成Spring AI,打造智能应用
AI赋能Spring开发:借助快马平台快速集成Spring AI,打造智能应用 Spring生态庞大,新技术集成往往需要查阅大量文档。最近我在尝试将Spring AI集成到项目中,发现这个过程比想象中要复杂得多。好在发现了InsCode(快马)平台ÿ…...
Python原生AOT编译到底稳不稳?我们压测了7类生产负载:高并发API、实时流处理、边缘AI推理——结果出乎意料(附完整benchmark报告)
第一章:Python原生AOT编译方案2026实战案例全景概览Python原生AOT(Ahead-of-Time)编译在2026年已进入工程化落地深水区,主流方案如Nuitka 2.0、PyO3 Rust AOT Pipeline、以及新兴的CPython官方实验分支cpython-aot,均…...
Fast-GitHub:突破网络瓶颈的开发效率工具解决方案
Fast-GitHub:突破网络瓶颈的开发效率工具解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 1 痛点直击ÿ…...
从SuperGlue到LoFTR:无检测器特征匹配是如何“卷”出来的?技术演进深度解读
从SuperGlue到LoFTR:无检测器特征匹配的技术革命与范式迁移 在计算机视觉领域,特征匹配一直是三维重建、SLAM、图像配准等任务的核心基础。传统方法如SIFT、ORB等基于手工设计的特征检测与描述算法,在过去二十年里主导了这一领域。然而&#…...
ai辅助stm32开发,向快马描述需求即可获得精准的f103c8t6引脚配置代码
最近在做一个基于STM32F103C8T6的小项目,需要用到UART、I2C、PWM、ADC和GPIO等多种外设。作为嵌入式开发新手,最头疼的就是引脚分配和初始化代码的编写。好在发现了InsCode(快马)平台的AI辅助开发功能,用自然语言描述需求就能得到专业的代码解…...
轴承故障诊断实战:从振动信号到Python代码的完整分析流程
轴承故障诊断实战:从振动信号到Python代码的完整分析流程 在工业设备维护领域,轴承作为旋转机械的核心部件,其健康状态直接影响设备运行效率与安全性。传统的人工巡检方式已难以满足现代工业对故障预警的实时性需求,而基于振动信号…...
从零开始:如何用开源方案打造你的第一台六足机器人
从零开始:如何用开源方案打造你的第一台六足机器人 【免费下载链接】hexapod 项目地址: https://gitcode.com/gh_mirrors/hexapod5/hexapod 想要亲手制作一台能够自如行走的六足机器人吗?hexapod开源项目为你提供了一套完整的免费解决方案&#…...
