其中最大值比较好求,直接对应的A除以对应的B然后取结果的最小值就可以了
最小值我们需要假设,假设每一行冶炼出来的X金属都多一个,比如:
3
75 4 75/4=18
53 3 53/3=17
59 3 59/3=19
这是假设的,这时对应的A除以对应的B得到结果,看第一行,当V=18时,可以冶炼4个金属,但是事实上只冶炼了3个,所以V>18,以此类推V>17,V>19,所以V要大于19,最小值要取结果的最大值,V>19,所以V=19+1=20
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int * a = new int[n]; //保存金属O的个数
int * b = new int[n]; //保存金属X的个数
int max = 1000000;//用来保存最大的V值
int min = 0; //用来保存最小的V值
for (int i = 0; i < n; i++)
{
cin >> a[i] >> b[i];
if ((a[i] / b[i]) < max) max = a[i] / b[i]; //最大的V值等于所有a[i]/b[i]的最小值
if (a[i] / (b[i] + 1) > min) min = a[i] / (b[i] + 1);
}
cout << min + 1 << " " << max << endl;
delete a;
delete b;
}