首先说一下自己的解题思路:想把每一盏灯都放入一个数组里,用{-1}表示关着的灯,用{1}表示开着的灯,然后进行反向操作的时候就乘上-1.
现在出现的问题是在以下这个代码中,light[num] 的值都从-1变成了0,想找人解释一下这是为什么
for (int j = 1; j <= t; j++) {
int num = floor(j * a);
light[num] *= (-1);
}
以下是整道题的代码
#include<iostream>
#include<cmath>
using namespace std;
int light[2000010] = {-1}, n;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
double a;
int t;
cin >> a >> t;
for (int j = 1; j <= t; j++) {
int num = floor(j * a);
light[num] *= (-1);
}
}
for (int i = 1; i <= 2000000; i++){
if (light[i] == 1) {
cout << i << endl;
return 0;
}
}
return 0;
}