解题步骤:
虽然题干说的是无限路灯,但是最后又说到ai × ti <= 2000000,所以就等同于有小于等于2000000个路灯。
第一步:开一个int型 容纳2000000个元素的数组,用来表示路灯的开关状态。
第二步:对于每组的a 和n,都能找到对应的路灯编号。
第三步:操作路灯的开关状态,如果是关的就打开,反之亦然。
第四步:循环这个数组 找出路灯状态为打开的编号。
最后,上代码! 不理解的话就多看几遍 带入例子好好思考!
import java.util.Scanner;
public class p1161 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
int arr[] = new int [2000005]; //第一步开数组
int n =scanner.nextInt();
for(int i = 0; i < n;i++) {
double a = scanner.nextDouble();
int t =scanner.nextInt();
for(int j = 1; j <= t;j++) {
int temp = (int)(a * j);
/*
第二步:找出要操作的路灯编号 注意等号右边不是(int)a * j
*/
arr[temp] = 1 - arr[temp]; //第三步:这里用 (1 - 数组元素)来达到0到1,1到0
}
}
for(int i = 0;i < 2000005 ;i++) { //第四步:找出打开的路灯编号
if(arr[i] == 1) {
System.out.println(i);
break;
}
}
}
}