蓝桥杯c/c++程序设计——冶炼金属

 冶炼金属

问题描述

小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。

现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。

根据这 N 条冶炼记录,请你推测出转换率 V 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。

输入格式

第一行一个整数 N,表示冶炼记录的数目。

接下来输入 N 行,每行两个整数 A、B,含义如题目所述。

输出格式

输出两个整数,分别表示 V 可能的最小值和最大值,中间用空格分开。

样例输入

3
75 3
53 2
59 2

样例输出

20 25

样例说明

当 V=20 时,有:⌊75/20⌋=3⌊,⌊53/20⌋=2,⌊59/20⌋=2,可以看到符合所有冶炼记录。

当 V=25 时,有:⌊75/25⌋=3,⌊53/25⌋=2,⌊59/25⌋=2,可以看到符合所有冶炼记录。

且再也找不到比 20 更小或者比 25 更大的符合条件的 V 值了。

评测用例规模与约定

对于 3030% 的评测用例,1≤N≤10^2。

对于 6060% 的评测用例,1≤N≤10^3。

对于 100100% 的评测用例,1≤N≤10^4,1≤B≤A≤10^9。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

 代码一:

#include<iostream>
using namespace std;
int main()
{int n;cin>>n;int a,b,sun,sun2,min=1e9+1,max=0;for(int i=0;i<n;i++){cin>>a>>b;sun=a/b;sun2=a/(b+1)+1;if(sun<min) min=sun;if(sun2>max) max=sun2;}cout<<max<<" "<<min;return 0;
}

 

#include<iostream>
using namespace std;

这两行代码包含了输入输出流的标准库,并指明使用 std 命名空间。

const int N=1e9+1
int main()
{

这里定义了一个常量 N,并初始化为 10^9 + 1。接着是 main 函数的开始。

    int n;cin >> n;

声明了一个整型变量 n,并从标准输入读取一个整数存储到变量 n 中。

    int a[N],b[N],c[N],d[N];

声明了四个长度为 N(非常大)的整型数组 abcd

    for (int i = 0; i < n; i++){cin >> a[i] >> b[i];c[i] = a[i] / b[i];d[i] = a[i] / (b[i] + 1) + 1;}

循环 n 次,每次读取两个整数并分别存储到 a[i] 和 b[i] 中,然后分别计算 a[i] / b[i] 的结果并存储在 c[i] 中,计算 a[i] / (b[i] + 1) + 1 的结果并存储在 d[i] 中。

    int min = c[0], max = d[0];

初始化了两个变量 min 和 max 分别为 c[0] 和 d[0]

    for (int i = 0; i < n; i++){if (c[i] < min) min = c[i];if (d[i] > max) max = d[i];}

再次循环 n 次,每次对 c[i] 和 d[i] 分别进行比较,更新 min 和 max 的值。

    cout << max<<" "<< min;

输出 max 和 min

    return 0;
}

返回 0,表示程序正常结束。

代码分析: 

  1. #include<iostream>:这行代码包含了输入输出流的标准库,使得可以使用 cin 和 cout

  2. using namespace std;:这行代码表示使用标准命名空间,这样我们就可以直接使用 cin 和 cout 而不需要加上 std:: 前缀。

  3. const int N=1e9+1:这行代码定义了一个常量 N,并赋值为 1 亿零 1。

  4. int main():这行代码声明了程序的入口点,即 main 函数。

  5. int n;:这行代码声明了一个整型变量 n,用来存储输入的数量。

  6. cin >> n;:这行代码从标准输入读取一个整数并存储到变量 n 中。

  7. int a[N],b[N],c[N],d[N];:这行代码定义了四个长度为 N 的整型数组 abcd,这里要注意 N 非常大,可能会超出栈内存,建议使用动态内存分配。

  8. for (int i = 0; i < n; i++):从 0 循环到 n-1。

  9. { cin >> a[i] >> b[i]; c[i] = a[i] / b[i]; d[i] = a[i] / (b[i] + 1) + 1; }:循环体内部从输入中读取两个整数,分别存储在 a[i] 和 b[i] 中,然后分别计算 a[i] / b[i] 的结果并存储在 c[i] 中,计算 a[i] / (b[i] + 1) + 1 的结果并存储在 d[i] 中。

  10. int min = c[0], max = d[0];:定义了两个变量 min 和 max,并分别初始化为 c[0] 和 d[0]

  11. for (int i = 0; i < n; i++):又一个循环,这次也从 0 循环到 n-1。

  12. if (c[i] < min) min = c[i]; if (d[i] > max) max = d[i];:在循环中对 c[i] 和 d[i] 分别进行比较,更新 min 和 max 的值。

  13. cout << max<<" "<< min;:输出 max 和 min

  14. return 0;:返回 0,表示程序正常结束。

 

代码二:

#include<iostream> // 引入iostream头文件,用于输入输出流
using namespace std; // 命名空间int main()
{int n; // 声明变量n,用于表示输入的数对的个数cin >> n; // 输入n的值int a[100001], b[100001], c[100001], d[100001]; // 声明四个数组a、b、c、d,大小为100001// 循环读取n个数对for (int i = 0; i < n; i++){cin >> a[i] >> b[i]; // 输入第i个数对的值c[i] = a[i] / b[i]; // 计算c[i]d[i] = a[i] / (b[i] + 1) + 1; // 计算d[i]}int min = c[0], max = d[0]; // 初始化最小值和最大值为数组c和d的第一个元素// 遍历数组c和d,找到最小值和最大值for (int i = 0; i < n; i++){if (c[i] < min) min = c[i]; // 如果c[i]小于最小值,更新最小值if (d[i] > max) max = d[i]; // 如果d[i]大于最大值,更新最大值}cout << max<<" "<< min; // 输出最大值和最小值return 0; // 返回0,表示程序正常结束
}

注意事项:

当 V=20 时,有:⌊75/20⌋=3⌊,⌊53/20⌋=2,⌊59/20⌋=2,可以看到符合所有冶炼记录。

当 V=25 时,有:⌊75/25⌋=3,⌊53/25⌋=2,⌊59/25⌋=2,可以看到符合所有冶炼记录。

求取公式

 c[i] = a[i] / b[i];   //计算最大值(取最小的那个)
 d[i] = a[i] / (b[i] + 1) + 1;   //计算最小值  (取最大的那个)

列如:

75/3=25,53/2=26,59/2=29  取25,26,29,最小的那个即为最大值。

75/(3+1)+1=19,53/(2+1)+1=18,59/(2+1)+1=20 取19,18,20,最大的那个即为最小值。

如果出现部分样例不通过的现象,要注意 int a[100001], b[100001], c[100001], d[100001]; // 声明四个数组a、b、c、d,数组的取值范围。

运行截图

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux习题1

解析&#xff1a;Tcsh是csh的增强版&#xff0c;并且完全兼容csh。它不但具有csh的全部功能&#xff0c;还具有命令行编辑、拼写校正、可编程字符集、历史记录、作业控制等功能。 AWK是一种优良的文本处理工具&#xff0c;Linux及Unix环境中现有的功能最强大的数据处理引擎之一…

C++ Qt开发:SqlRelationalTable关联表组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍SqlRelationalTable关联表组件的常用方法及灵…

纯CSS实现马里奥效果,回忆一下童年吧

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; CSS专栏&#xff1a;想学CSS的&#xff0c;冲这里 &#x1f4…

【Filament】立方体贴图(6张图)

1 前言 本文通过一个立方体贴图的例子&#xff0c;讲解三维纹理贴图&#xff08;子网格贴图&#xff09;的应用&#xff0c;案例中使用 6 张不同的图片给立方体贴图&#xff0c;图片如下。 读者如果对 Filament 不太熟悉&#xff0c;请回顾以下内容。 Filament环境搭建绘制三角…

安装 PyQt5 保姆级教程

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 博主之前做应用层开发用的一直是 Qt&#xff0c;这次尝试一下在 python 中使用 Pyqt5 模块来开发 UI 界面&#xff0c;这里做一些…

C语言rand函数,srand函数,time函数实现随机数,及猜数字小游戏

怀心之所爱&#xff0c;奔赴山河 前言 最近在复习c的知识&#xff0c;想起之前写过一个猜数字小游戏&#xff0c;所以今天就把自己关于随机数的使用经验分享一下&#xff0c;希望对大家有帮助。 一.rand函数 1.函数的声明如下 可以看到&#xff0c;返回值是int类型&#xff…

MCEWMDRMNDBootstrap.dll文件丢失,软件游戏无法启动,怎样下载修复

不少小伙伴反馈&#xff0c;在打开某些游戏或软件的时候&#xff0c;Windows会提示“MCEWMDRMNDBootstrap.dll文件丢失&#xff0c;软件无法启动”&#xff0c;不知道应该怎样办&#xff1f; 首先&#xff0c;我们先来了解“MCEWMDRMNDBootstrap.dll文件”是什么&#xff1f; …

Arduino stm32 USB CDC虚拟串口使用示例

Arduino stm32 USB CDC虚拟串口使用示例 &#x1f4cd;相关篇《STM32F401RCT6基于Arduino框架点灯程序》&#x1f516;本开发环境基于VSCode PIO&#x1f33f;验证芯片&#xff1a;STM32F401RC⌛USB CDC引脚&#xff1a; PA11、 PA12&#x1f527;platformio.ini配置信息&…

基于YOLOv8的遥感SAR舰船小目标识别

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的遥感SAR舰船小目标&#xff0c;阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的…

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.

1、首先进入阿里云maven仓库&#xff0c;在搜索栏输入无法下载的依赖名称&#xff0c;查询现有版本号&#xff0c;可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库&#xff1a; maven { url https://www.jitpack.io } maven { u…

3D游戏角色建模纹理贴图处理

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中&#xff0c;我们将介绍 3D 纹理的基础知识&#xff0c;并讨…

算法设计与分析实验报告-贪心算法

校课程的简单实验报告。 算法设计与分析实验报告-递归与分治策略 算法设计与分析实验报告-动态规划算法 算法设计与分析实验报告-贪心算法 dijkstra迪杰斯特拉算法&#xff08;邻接表法&#xff09; 算法设计与分析实验报告-回溯法 算法设计与分析实验报告-分支限界法 …

Spring高手之路-@Autowired和@Resource注解异同点

目录 相同点 不同点 1.来源不同。 2.包含的属性不同 3.匹配方式&#xff08;装配顺序&#xff09;不同。 ​编辑 4.支持的注入对象类型不同 5.应用地方不同 相同点 都可以实现依赖注入&#xff0c;通过注解将需要的Bean自动注入到目标类中。都可以用于注入任意类型的Bean…

什么是uniapp?用uniapp开发好不好用?

随着移动应用市场的持续发展&#xff0c;开发者们面临着不断增长的需求和多样化的平台选择。在这个背景下&#xff0c;UniApp 应运而生&#xff0c;成为一种跨平台开发框架&#xff0c;为开发者提供了一种高效、简便的方式来开发移动应用程序。利用 UniApp 开发应用程序可以节省…

实战10 角色管理

目录 1、角色后端接口 2、角色列表查询 2.1 效果图 2.2页面原型代码 2.3 角色api代码 role.js 2.4 查询角色列表代码 4、 新增和编辑角色 5、删除角色 6、分配权限 6.1 分配权限思路 6.2 分配权限回显接口 6.3 分配权限回显前端实现 6.4分配权限后端接口 6.4.1 R…

Ubuntu 22.04.3 Server 设置静态IP 通过修改yaml配置文件方法

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…

Solana生态全方位解析科普和钱包(bitget钱包)

如果你对它感兴趣&#xff0c;或者想探索一个具有巨大潜力的公链或者生态&#xff0c;那么Solana绝对值得你关注。在这篇文章中&#xff0c;我们将带你全方位了解Solana&#xff0c;并为你推荐一款绝佳的Solana钱包&#xff01; 什么是 Solana (SOL)&#xff1f; Solana (SOL)…

UniApp小程序使用vant引入vant weapp

HBuilder X里新建项目指路 HBuilderX新建项目 安装node.js指路 安装node.js 1.通过npm安装 查看npm环境 //打开终端输入命令查看版本 npm -version 1.1.右键打开外部终端窗口 1.2.输入npm init -y命令 1.3.通过命令安装 npm i vant/weapp1.3.3 -S --production 1.4.打开工具…

SpringBoot+AOP+Redis 防止重复请求提交

本文项目基于以下教程的代码版本&#xff1a; https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…