问题描述
答案提交
解题思路
起初看到题的时候还在想着把75 3,53 2,59 2这样的对给存起来,然后用i一个一个试出来。
后来发现有更巧妙的方法,就是每一个对都会得到一个范围,那么只要求得所有范围的交集就是答案了。有种四两拨千斤的感觉。
AC代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 读取输入的整数 n
int n = scan.nextInt();
// 初始化左右边界
int left = 0, right = 1000000000;
// 循环 n 次,读取每对整数 a 和 b
while (n-- > 0) {
int a = scan.nextInt();
int b = scan.nextInt();
// 计算 c 和 d 的值
int c = a / (b + 1) + 1;
int d = a / b;
// 更新左边界,如果 c 大于当前左边界
if (c > left) {
left = c;
}
// 更新右边界,如果 d 小于当前右边界
if (d < right) {
right = d;
}
}
// 输出结果
System.out.println(left + " " + right);
}
}
相关知识
思维,问题转化,区间
(by 归忆)