面试题—100盏灯问题

7人阅读 评论(0) 收藏 举报
分类:

问题描述:有100盏灯,编号依次为1,2,3.100,电灯全部关着。现在来了100个人,第一个人把所有的灯开关按下;第二个人隔一个灯按下(2,4,6…);第三个人每隔两个灯按下(3,6,9…).第100个人隔99个灯按下(100),最后还有几盏灯,那几盏灯亮着?
问题分析:由于所有灯都全部关着,我们可以知道当灯被按下次数为奇数时灯亮,偶数时灯灭。每盏灯的开关被按下次数与其编号的正约数个数有关系。
例如:第一个被拉1下;
第二个被拉2下;
第三个被拉2下;
第四个被拉3下;
……
上述可知,非方数一定有偶个公约数,平方数一定有奇个公约数,而灯开关被按下的数为奇数时灯才亮,所有编号1~100中平方数有1(1^2),4(2^2),9(3^2),16(4^2),25(5^2),36(6^2),49(7^2),64(8^2),81(9^2),100(10^2)共10个数。所以亮着的灯有10个。
灯亮的编号为1~10的平方。(即求1~100的完全平方数)
代码实现如下

#include<stdio.h>
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    for (int n = 1; n <= 100; n++)
    {
        int m = (int)(sqrt)(n);
        if ( m*m == n)
        {
            cout << n<<endl;
        }
    }
    return 0;
}

结果输出如下:
这里写图片描述

查看评论

如何编程解决百度面试题100盏灯问题

百度100盏灯问题 Q: 有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯熄灭一盏,即熄灭第2盏,第4盏,以此类推, 第三轮改变编号为3的倍数的电灯,第3盏,第6盏,如果原来那盏灯是亮的,...
  • shihui512
  • shihui512
  • 2013-05-12 21:43:51
  • 3777

100盏灯的问题

100盏灯的解题方法如下:对于每个人在拉关开关就是将原来的变反。 现在第一个人走后,所有的灯全亮; 第二个人走后,2 的倍数的灭。。。。 以此类推。。。。。 import java.util.*; ...
  • zhu_9527
  • zhu_9527
  • 2014-02-23 17:03:37
  • 1084

100盏灯开关的问题

房间里有100盏电灯,编号为1,2,3……100,每盏灯上有一个按钮,初始时灯全都是关的。        编好号的100位同学由房间外依次走进去,将自己编号的倍数的灯的按钮全部按一次,例如第一位同学把...
  • qq14942468
  • qq14942468
  • 2014-04-20 13:52:02
  • 1167

100盏灯经过一系列操作后最后还有多少盏灯亮着(百度的一道笔试题)

今年百度的一道笔试题:有100盏灯(它们的位置编号为1, 2 .. 99,100),刚开始全都是灭着的。第一次把所有的灯都打开,第二次把偶数位置上的灯灭了,第三次把位置是3的倍数的灯原来灭的打开,原来...
  • shfqbluestone
  • shfqbluestone
  • 2012-10-26 21:40:52
  • 1171

微软面试题--三个灯泡--三个开关

 这是一道微软用来测试应聘者的试题。它主要考察受训者的逻辑思维和判断能力,同 时也给受训者一些关于问题解决方法上的启示。 游戏规则和程序 1.有两个房间,一间房里有三盏灯,另一间房有控制着三...
  • wukun_kevin
  • wukun_kevin
  • 2015-08-07 09:00:23
  • 1217

一道逻辑题 房间里有100盏电灯

在博客园看到的这个问题,也想做一下。题目是这样的 房间里有100盏电灯,编号为1,2,3……100,每盏灯上有一个按钮,初始时灯全都是关的。编好号的100位同学由房间外依次走进去,将自己编号的倍...
  • shangzhihaohao
  • shangzhihaohao
  • 2015-04-12 16:41:51
  • 1934

51. 某公司的面试题:100个人去按100个灯,每个人只能按它顺序的倍数的灯

题目:100个灯开始都是关着,现在有100个人去按100个灯,每个人只能按它顺序的倍数的灯, 比如:100个人的顺序编号为1,2,3,。。。 1 只能按1的倍数的灯,所有的灯都按一遍 2只能按2...
  • hhh3h
  • hhh3h
  • 2014-09-05 22:19:29
  • 1110

大厅里有100盏灯,每盏灯都编了号码,分别为1-100。每盏灯由一个开关来控制。

小弟学识浅薄,欢迎各位评论指点,谢谢! import java.io.BufferedReader; import java.io.IOException; import java.io.I...
  • L_GTim
  • L_GTim
  • 2013-10-14 15:17:44
  • 2718

还有几盏灯?

大厅里有100盏灯,每盏灯都编了号码,分别为1-100.每盏灯由一个开关来控制.(开关按一下,灯亮,再按一下灯灭.开关的编号与被控制的灯相同.)开始时,灯是全灭的.现在按照以下规则按动开关. 第一次...
  • persever
  • persever
  • 2015-05-18 19:48:42
  • 616

一个简单推广

开始时,灯是全灭的。现在按照以下规则按动开关: #include #include using namespace std; /*大厅里有n盏灯,每盏灯都编了号码,分别为1-n。每盏灯由一个...
  • iloveyoujelly
  • iloveyoujelly
  • 2014-07-02 10:59:08
  • 341
    个人资料
    持之以恒
    等级:
    访问量: 2851
    积分: 502
    排名: 10万+