-
Notifications
You must be signed in to change notification settings - Fork 0
/
洛谷P1161 开灯.cpp
43 lines (43 loc) · 1.73 KB
/
洛谷P1161 开灯.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*---------------------------------------------------------------------------*
// 洛谷OJ P1161开灯
// 在一条无限长的路上,有一排无限长的路灯,
// 编号为1,2,3,4,…1,2,3,4,…。
// 每一盏灯只有两种可能的状态,开或者关。
// 如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。
// 如果原来是开,将变成关。如果原来是关,将变成开。
// 在刚开始的时候,所有的灯都是关的。
// 小明每次可以进行如下的操作:
// 指定两个数,a,t(aa为实数,tt为正整数)。
// 将编号为[a],[2*a],[3*a],…,[t*a]的灯的开关各按一次。
// 其中[k]表示实数k的整数部分。
// 在小明进行了n次操作后,小明突然发现,这个时候只有一盏灯是开的,
// 小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。
// 幸好,小明还记得之前的n次操作。
// 于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?
*--------------------------------------------------------------------------*/
//https://www.luogu.com.cn/record/38883597
#include<iostream>
using namespace std;
int main(){
bool light[2000001]={0};
int t,n;
long long T; //一定要记得弄一个long long 数存相乘的结果,否则分分钟溢出
double a;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a>>t;
for(int o=1;o<=t;o++){
T=a*o;
if(light[T]==false){ //布尔变量标识
light[T]=true;
}else light[T]=false;
}
}
for(int i=1;;i++){
if(light[i]==true){
cout<<i<<endl;
break;
}
}
return 0;
}