蓝桥杯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,数组的取值范围。

运行截图

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

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

相关文章

【STM32单片机】汉诺塔游戏

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;IIC OLED液晶、按键等。 主要功能&#xff1a; 系统运行后&#xff0c;OLED显示游戏画面&#xff0c;可通过K1或K3键选择关卡&#xff0c;K2键开始。 二…

开源分布式搜索引擎ElasticSearch结合内网穿透远程连接

文章目录 前言1. Windows 安装 Cpolar2. 创建Elasticsearch公网连接地址3. 远程连接Elasticsearch4. 设置固定二级子域名 前言 简单几步,结合Cpolar 内网穿透工具实现Java 远程连接操作本地分布式搜索和数据分析引擎Elasticsearch。 Cpolar内网穿透提供了更高的安全性和隐私保…

麒麟V10arm桌面版的安装包在麒麟V10服务器版安装

安装过后&#xff0c;可执行程序可能运行不了&#xff0c;看起来就像没识别为可执行程序。在终端运行&#xff0c;会发现其实是缺少了某些库&#xff0c;比如libicui18n.so.66、libicuuc.so.66、libicudata.so.66和libm.so.6库版本不对。 报这个错&#xff1a;error while loa…

如何使用 pnpm 实现前端 Monorepo项目管理

前言 随着软件开发项目变得越来越庞大和复杂&#xff0c;如何有效管理和维护代码库成为了一个重要的问题。一种流行的解决方案是 Monorepo&#xff0c;也就是在一个版本控制系统中管理所有的项目代码。 什么是 Monorepo Monorepo 是一种项目代码管理方式&#xff0c;指单个仓…

internet download manager 6.42怎么删除卸载,2024最新idm卸载不干净怎么解决

internet download manager 6.42简称为IDM&#xff0c;这是一款非常好用的下载软件&#xff0c;很多小伙伴都在使用。如果后续我们不再需要使用该软件&#xff0c;小伙伴们知道具体该如何将其卸载掉吗&#xff0c;其实卸载方法是非常简单的&#xff0c;只需要进行几个非常简单的…

分布式核心技术之分布式锁

文章目录 为什么要使用分布锁&#xff1f;分布式锁的三种实现方法基于数据库实现分布式锁基于缓存实现分布式锁基于 ZooKeeper 实现分布式锁知识扩展&#xff1a;如何解决分布式锁的羊群效应问题&#xff1f; 三种实现方式对比 分布式互斥&#xff0c;领悟了其“有你没我&#…

绝地反击,不做背锅侠!

那么作为运维人员&#xff0c;如何摆脱以上背黑锅的尴尬局面呢&#xff1f;堡垒机当然是破解此局面的绝杀大招。 1.统一登录入口 提供统一入口&#xff0c;集中管理和分配账户密码、所有运维人员只能登录堡垒机才能访问服务器&#xff0c;梳理“人与服务器”之间的关系&#…

新版Microsoft Edge和google chrome谁才是浏览器的王者?

Microsoft Edge是一款现代化的浏览器&#xff0c;它拥有众多功能和强大的性能&#xff0c;为用户带来更加流畅的浏览体验。 Edge最近推出了分屏功能&#xff0c;支持一个窗口同时显示两个选项卡&#xff0c;这可以大大提高生产力和多任务处理能力。 一、结合平时的使用经历&…

2024 年网络安全展望:未来是什么?

为了建立强大的网络安全计划&#xff0c;组织必须首先了解整体威胁环境不断变化的性质。 人工智能在成为安全团队的帮助之前&#xff0c;将为网络犯罪分子带来巨大的福音。 网络犯罪分子和不良行为者将受益于先进人工智能工具的广泛部署&#xff0c;然后他们的目标才能建立人…

【计算机网络】—— 奈氏准则和香农定理

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 失真 - 信号的变化 ​编辑影像失真的因素&#xff1a; ​编辑信道带宽&#xff1a; 码间串扰…

使用Go语言编写基本的HTTP服务器

你是否曾经想过自己动手编写一个Web服务器&#xff1f;那种可以接收来自全世界的请求&#xff0c;然后回应一些“Hello, World!”之类的消息的服务器&#xff1f;如果你有这个想法&#xff0c;那么Go语言就是你的最佳伙伴。让我们一起踏上这段奇妙的探险之旅吧&#xff01; 首…

Docker部署Nexus Maven私服并实现远程访问Nexus界面

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定N…

【HarmonyOS开发】探究Hap与App包的结构与区别

1、Hap与App包的区别 OpenHarmony 可以进行两种形式&#xff08;Hap和App&#xff09;的打包&#xff0c;HAP是用于本地调试的&#xff0c;APP包是用于上架发布的。 根据不同的设备类型&#xff0c;一个APP包可以包含多个HAP包。 下面从两个角度进行分析 1.1 编译构建角度 编…

百度Apollo五步入门自动驾驶:Dreamview与离线数据包分析(文末赠送apollo周边)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 粉丝福利活动 ✅参与方式&#xff1a;通过连接报名观看课程&#xff0c;即可免费获取精美周边 ⛳️活动链接&#xf…

matlab设置colorbar标题的两种方式

%% 第一种 figure; A rand(3,4,3); A1 A(:,:,1); A2 A(:,:,2); A3 A(:,:,3); contourf(A1,A2,A3,30); colormap(jet);colorbar; my_handlecolorbar; my_handle.Label.String depth/km; my_handle.Label.FontSize 15;%% 第二种 figure; A rand(3,4,3); A1 A(:,:,1); A2 …

FinGPT:金融大语言模型 | 开源日报 No.127

verdaccio/verdaccio Stars: 15.0k License: MIT Verdaccio 是一个轻量级的 Node.js 私有代理仓库。 以下是 Verdaccio 的核心优势和关键特性&#xff1a; 零配置&#xff1a;无需复杂设置即可快速启动私有 npm 注册表。本地化管理&#xff1a;通过内置小型数据库进行简单而…

【STM32单片机】电子木鱼设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103/F407单片机控制器&#xff0c;TFTLCD触摸屏、蜂鸣器等。 主要功能&#xff1a; 系统运行后&#xff0c;TFTLCD显示画面&#xff0c;可触摸木鱼区域&#xff0c;功德计数加1&#xf…

【操作系统】探究进程奥秘:显示进程列表的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;Linux专栏&#xff1a;《探秘Linux | 操作系统解密》⏰诗赋清音&#xff1a;月悬苍穹泛清辉&#xff0c;梦随星河徜徉辉。情牵天际云千层&#xff0c;志立乘风意自飞。 ​ 目录 &a…

2023年国赛高教杯数学建模E题黄河水沙监测数据分析解题全过程文档及程序

2023年国赛高教杯数学建模 E题 黄河水沙监测数据分析 原题再现 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变化和人民生活的影响&#xff0c;以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾等方面都具有重要的理论指导…

Visual Studio2022配置ReSharper C++ 常用设置

如需安装免费的可以在下面留言&#xff0c;看到即回复 文章目录 Visual Studio2022配置ReSharper C 常用设置配置Visual Studio2022&#xff0c;使其能够按回车进行补全配置ReSharper C 设置自动弹出配置ReSharper C 的快捷键ReSharper C 去掉注释拼写使用中文注释 如何关闭新版…