第十四届蓝桥杯大赛真题C/C++组——第三题:冶炼金属

本文介绍了一个编程问题,通过C++代码实现计算给定数对(a,b)中a除以b商的最小值和最大值,利用了二分法技巧。代码展示了如何遍历输入,更新全局最小值和最大值,并在最后输出结果。
摘要由CSDN通过智能技术生成

1.题目

2.参考代码

#include <bits/stdc++.h>

#define endl '\n'

using namespace std; 

int main(){
  ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);   
    int n ; 
    cin >> n ; 

    int mi = 0 , mx = 2e9 ; 
    for(int i = 1 ; i <= n ; i ++){
        int a , b ; cin >> a >> b ; 
        
        int r = a / b , l = a / (b + 1) + 1;
        mi = max(mi , l) , mx = min(mx , r) ; 
    }
    cout << mi << ' ' << mx << endl; 
    
    return 0;
}

3.代码分析

       计算一组数对(a, b)中,所有a除以b的商的最小值和最大值。代码通过循环读入n组数对(a, b),然后计算每对数对应的商的最小值和最大值,并更新全局的最小值(mi)和最大值(mx)。最后输出计算得到的最小值和最大值。

  1. 读入一个整数n,表示接下来有n组数对。

  2. 初始化最小值mi为0,最大值mx为2e9。

  3. 循环遍历n组数对。

  4. 读入当前数对的两个整数a和b。

  5. 计算当前数对对应的商的最大值r 和最小值 l。

  6. 更新全局的最小值mi和最大值mx。

  7. 输出计算得到的最小值和最大值。

考察知识点为二分等。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值