开灯(标记)

缺乏、安全感 2022-11-30 01:41 185阅读 0赞

题目描述

在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…。每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:指定两个数,a,ta(a为实数,t为正整数)。将编号为[a],[2×a],[3×a],…,[t×a]的灯的开关各按一次。其中[k]表示实数k的整数部分。在小明进行了n次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。幸好,小明还记得之前的n次操作。于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?输入格式第一行一个正整数n,表示n次操作。接下来有n行,每行两个数,ai,ti。其中ai是实数,小数点后一定有6位,ti是正整数。输出格式仅一个正整数,那盏开着的灯的编号。

输入输出样例

输入

  1. 3
  2. 1.618034 13
  3. 2.618034 7
  4. 1.000000 21

输出

20

  1. //当maxn范围较小时会出现WA,RE,求明眼人告知原因
  2. #include<iostream>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. const int maxn=1000000;
  7. using namespace std;
  8. int light[maxn+5]={ 0};
  9. int in(double x)//下取整函数
  10. {
  11. return floor(x);
  12. }
  13. int main()
  14. {
  15. //memset(light,1,sizeof(light));//未发挥作用
  16. int n=0;
  17. cin>>n;
  18. for(int i=1;i<=n;i++)
  19. {
  20. double a=0;
  21. int t=0;
  22. cin>>a>>t;
  23. for(int i=1;i<=t;i++)
  24. {
  25. int de=in(double(i)*a);
  26. if(light[de]==0)
  27. {
  28. light[de]=1;
  29. }
  30. else if(light[de]==1)
  31. {
  32. light[de]=0;
  33. }
  34. }
  35. }
  36. for(int i=1;i<=maxn;i++)
  37. {
  38. if(light[i]==1)
  39. {
  40. cout<<i;
  41. break;
  42. }
  43. //cout<<light[i]<<" ";//检验用
  44. }
  45. }

发表评论

表情:
评论列表 (有 0 条评论,185人围观)

还没有评论,来说两句吧...

相关阅读

    相关

    如果状态不好,和代码死磕不是办法,去休息,等明天状态好了,再去想代码,不然一个bug接着一个bug,容易有挫败感, try hard hard, not solved tod

    相关 《岳阳楼

    岳阳楼记 范仲淹 庆历四年春,滕子京谪守巴陵郡。越明年,政通人和,百废俱兴,乃重修岳阳楼,增其旧制,刻唐贤今人诗赋于其上,属予作文以记之。 予观夫巴陵胜状,在洞庭一湖。衔

    相关

    程序的运行路径,在一定的层次上来看(例如模块),在任意时刻其实是一个很简单的关系。而现在的计算模型里面,这个关系是程序自己维护的。这个关系由程序自己维护的缺点是系统不容易进行调

    相关

      工作关系,近来有些忙碌,虽然仍然干的是游戏开发,但是或多或少觉得,目前的工作慢慢也变得仅仅是份工作罢了~      突然想起,当年的自己怎么就一股脑儿的踏入了这个行业呢

    相关 蟠桃

    Problem Description 孙悟空在大闹蟠桃园的时候,第一天吃掉了所有桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一

    相关 马拉松

    马拉松记        都说人生像一场马拉松,学会坚持,学会冲刺,学会放肆。上个周末我和我的小伙伴,贵州大学的朋友们迎来了一场这样的马拉松。我们报名参与的项目是半程马拉