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

news2024/11/20 22:42:40

 冶炼金属

问题描述

小蓝有一个神奇的炉子用于将普通金属 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.coloradmin.cn/o/1337614.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于yolov8,制作停车位计数器(附源码)

大家好&#xff0c;YOLO(You Only Look Once) 是由Joseph Redmon和Ali开发的一种对象检测和图像分割模型。 YOLO的第一个版本于2015年发布&#xff0c;由于其高速度和准确性&#xff0c;瞬间得到了广大AI爱好者的喜爱。 Ultralytics YOLOv8则是一款前沿、最先进(SOTA)的模型&a…

随记-语义分割

Semantic Segmentation 什么是语义分割全卷积网络FCN摘要 什么是语义分割 语义分割 Semantic Segmentation 旨在对图像的每个像素进行分类&#xff0c;将其分配给预定义的语义类别。 &#xff08;检测图像中的物体并按属性分类&#xff09; 实例分割 Instance Segmentation 实…

Vue框架引入Element-Ui

首先已经创建好了 Vue 框架&#xff0c;安装好了 node.js。 没有完成的可按照此博客搭建&#xff1a;搭建Vue项目 之后打开终端&#xff0c;使用命令。 1、命令引入 npm i element-ui -S2、package.json 查看版本 在 package.json 文件里可查看下载好的依赖版本。 3、在 ma…

按照不同产品类型,划片机主要可以分为如下几个类别

随着科技的不断发展&#xff0c;划片机在半导体封装行业中的应用越来越广泛。根据不同的产品类型&#xff0c;划片机主要可以分为砂轮划片机和激光划片机两个类别。本文将详细介绍这两类划片机的特点和应用。 一、砂轮划片机 砂轮划片机是综合了水气电、空气静压高速主轴、精密…

【Vulnhub 靶场】【Funbox: Scriptkiddie】【非常简单】【20210720】

1、环境介绍 靶场介绍&#xff1a;https://www.vulnhub.com/entry/funbox-scriptkiddie,725/ 靶场下载&#xff1a;https://download.vulnhub.com/funbox/Funbox11.ova 靶场难度&#xff1a;简单 发布日期&#xff1a;2021年07月20日 文件大小&#xff1a;1.3 GB 靶场作者&…

Windows无法安装edge 无法连接Internet

如果出现以上问题&#xff0c;或者Edge浏览器无法更新&#xff0c;提示防火墙错误之类的都可以解决问题。 下载以下证书文件并导入即可解决问题。 MicrosoftRootCertificateAuthority2011.cer

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(4)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识&#xff08;3&#xff09; 1.1 PCI总线的组成 PCI总线作为处理器系统的本地总线&#xff0c;是处理器系统的一个组成部件。因此&#xff0c;讲述PCI总线的组成结构&#xff0c;不…

DataFunSummit:2023年数据湖架构峰会-核心PPT资料下载

一、峰会简介 现今&#xff0c;很多企业每天都有PB级的数据注入到大数据平台&#xff0c;经过离线或实时的ETL建模后&#xff0c;提供给下游的分析、推荐及预测等场景使用。面对如此大规模的数据&#xff0c;无论是分析型场景、流批一体、增量数仓都得益于湖仓一体等数据湖技术…

RocketMQ文件准备

1、RocketMQ下载 下载地址&#xff1a;下载 | RocketMQ Source下载与Binary下载区别&#xff1a; binary是编译好的可以直接使用&#xff0c;source是还没编译过的源代码&#xff0c;需要自行编译。 这里大家自行下载需要的版本 2、RocketMQ管理界面 因为Rocket没有图形化管理…

渗透测试 | 信息收集常用方法总结

目录 一、关于域名 1.子域名收集 a.搜索引擎查找 b.在线查询 c.工具 d.SSL/TLS证书查询 2.端口型站点收集 3.目录文件扫描 a.目录扫描工具 b.github搜索 c.google搜索 d.在线网站 e.文件接口工具 4.旁站和C段 a.旁站查询 b.C段查询 5.网站技术架构信息 a.基础…

重磅!这本SCI期刊已解除「On hold」,另有Top期刊仍被调查中

近期小编在Master Journal List上查询期刊时偶然发现&#xff0c;此前被标记为「On Hold」的SCI期刊Biomass Conversion and Biorefinery&#xff0c;已经被科睿唯安取消了「On Hold」标识&#xff01; 查询网址&#xff1a;https://mjl.clarivate.com/home 此前期刊处于「On …

【Petalinux】制作SD卡 操作系统 启动

Vivado 添加 SD0 导出hdf 制作SD卡 https://mathd.blog.csdn.net/article/details/135217761 【Petalinux】下为空白SD卡建立BOOT&#xff0c;rootfs分区 Petalinux 生成 Petalinux 框架 petalinux-create --type project --template zynq --name sdtest进入 sdtest 文件…

Python3.12 新版本之f-string的几个新特性

目录 概述 f-string表达式 1. 支持转义字符 2. 支持多行字符串 3. 支持重复使用的引号种类 4. 支持无限嵌套 附录 Python3.12新语法特性 概述 Python 3.12在10月2日发布&#xff0c;新版本包含一系列对语言和标准库的改变。 库的改变主要集中在清理已弃用的 API、可…

cJSON简析

文章目录 json概要cJSON数据结构 递归解析示例references json概要 json是一种文本格式的协议 对于人的可阅读性非常好 其中object和array中的value都可以嵌套 cJSON数据结构 每个节点的数据结构如下 /* cJSON Types: */ #define cJSON_Invalid (0) #define cJSON_False (…

智能监测/检测系统EasyCVR国标接入无法播放是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

减小PAPR——DFT扩频

文章目录 前言一、DFT 扩频原理二、MATLAB 仿真1、核心代码2、仿真结果①、4QAM 调制时 IFDMA、LFDMA 和 OFDMA 的 DFT 扩频技术的 PAPR 性能②、16QAM 调制时 IFDMA、LFDMA 和 OFDMA 的 DFT 扩频技术的 PAPR 性能③、64QAM 调制时 IFDMA、LFDMA 和 OFDMA 的 DFT 扩频技术的 PA…

Javaweb见解

1 web相关的概念 1.1 软件的基本架构 C/S(Client-Server)。比如我们手机上的app QQ软件 飞秋 特点&#xff1a;必须下载特定的客户端程序。服务端升级之后&#xff0c;客户端也需要随着升级。 B/S(Broswer-Server).比如京东网站&#xff0c;腾讯qq官方网站 特点&#xff1…

AR眼镜定制_AR智能硬件方案|显示方案|光学方案

AR眼镜的硬件方案定制是根据客户需求和功能来设计的。从芯片平台选型、主板尺寸大小、内存、电池容量&#xff0c;到实现各项功能的传感器、显示光机模组、摄像头、接口、按键、充电等&#xff0c;再到整机的结构、散热设计&#xff0c;以及双目AR眼镜、单目智能眼镜、全息头盔…

【教学类-42-03】20231225 X-Y 之间加法题判断题3.0(确保错误题有绝对错误的答案)

背景需求&#xff1a; 根据需求&#xff0c;0-5以内的判断是21题正确&#xff0c;21题错误&#xff0c;但由于错误答案是随机数抽取&#xff0c;有可能恰好是正确的&#xff0c;所以会出现每套题目的正确数和错误数不一样的情况 优化思路一&#xff1a; 设置如果错误答案与正…

TypeScript学习(基础篇)

前言 在现代的Web开发生态系统中&#xff0c;JavaScript已经成为一种必备的技术。然而&#xff0c;随着应用的增大&#xff0c;JavaScript的一些限制开始显现&#xff0c;例如缺乏静态类型检查和编译时错误检查。这正是TypeScript发挥作用的地方&#xff0c;TypeScript是一种静…