这里使用数组 arr 来模拟路灯的开关情况,那么 arr[0] 不是对应编号为 1 的路灯吗,所以最后的结果为什么不是数组下标加 1 呢?
import java.util.Scanner;
public class P1161 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 数组 arr 存储路灯的状态, 0 时代表关闭, 1 时代表打开
int[] arr = new int[2000000];
int n = in.nextInt();
// 对路灯执行 n 次操作
for (int i = 0; i < n; i++) {
double a = in.nextDouble(), t = in.nextDouble();
for (int j = 1; j <= t; j++) {
// 路灯关闭就打开, 打开则关闭
if (arr[(int)(a * j)] == 0) {
arr[(int)(a * j)] = 1;
} else {
arr[(int)(a * j)] = 0;
}
}
}
// 数组元素为 1 时表示打开, 遍历数组, 遇到 1 则输出下标
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 1) {
System.out.println(i);
break;
}
}
in.close();
}
}