题目描述
小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V,V 是一个正整数,这意味着消耗 V 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V 时,无法继续冶炼。
现在给出了 N 条冶炼记录,每条记录中包含两个整数 A 和 B,这表示本次投入了 A 个普通金属 O,最终冶炼出了 B 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。
根据这 N 条冶炼记录,请你推测出转换率 $V$ 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。
输入格式
第一行一个整数 N,表示冶炼记录的数目。
接下来输入 N 行,每行两个整数 A,B,含义如题目所述。
输出格式
输出两个整数,分别表示 V 可能的最小值和最大值,中间用空格分开。
样例 1
样例输入 1
3
75 3
53 2
59 2
样例输出 1
20 25
【评测用例规模与约定】
对于 30% 的评测用例,1 ≤ N ≤ 100。
对于 60% 的评测用例,1 ≤ N ≤ 1000。
对于 100% 的评测用例,1 ≤ N ≤ 10000,1 ≤ B ≤ A ≤ 10^9。
蓝桥杯 2023 省赛 B 组 C 题。
代码
#include <iostream>
#include "limits.h"
using namespace std;
int main()
{
long int n;
cin>>n;
long int a[n],b[n];
int max = INT_MAX;
int min = INT_MIN;
for(long int i = 0; i < n; i++)
{
cin>>a[i]>>b[i];
if(a[i]/b[i] < max) max = a[i]/b[i];
if(a[i]/(b[i]+1)+1 > min) min = a[i]/(b[i]+1)+1;
}
cout<<min<<" "<<max<<endl;
return 0;
}
启发
在C++中,取无穷大:
对 int 型:头文件 limits.h
正无穷大:INT_MAX; 负无穷大:INT_MIN。
对 double 型:头文件 float.h
正无穷大:DBL_MAX; 负无穷大:DBL_MIN。