首页 > 试题广场 >

现在有100个灯泡,每个灯泡都是关着的,第一趟把所有的灯泡灯

[单选题]
现在有100个灯泡,每个灯泡都是关着的,第一趟把所有的灯泡灯泡打开,第二趟把偶数位的灯泡制反,第三趟让第3,6,9……的灯泡制反……第100趟让第100个灯泡制反,问经过一百趟以后有多少灯泡亮着。
  • 0
  • 1
  • 2
  • 10
推荐

1.对于每盏灯,拉动的次数是奇数时,灯就是亮着的,拉动的次数是偶数时,灯就是关着的。

2.每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。

3.1——100这100个数中有哪几个数,约数的个数是奇数。我们知道一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。

所以这100盏灯中有10盏灯是亮着的。 它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。

发表于 2014-10-25 00:25:59 回复(10)
1.对于每盏灯,拉动的次数是奇数时,灯就是亮着的,拉动的次数是偶数时,灯就是关着的。
2.每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。
3.1——100这100个数中有哪几个数,约数的个数是奇数。我们知道一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。
所以这100盏灯中有10盏灯是亮着的。
它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。
发表于 2014-12-11 09:51:47 回复(0)
1.对于每盏灯,拉动的次数是奇数时,灯就是亮着的,拉动的次数是偶数时,灯就是关着的。
2.每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。
3.1——100这100个数中有哪几个数,约数的个数是奇数。我们知道一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。 所以这100盏灯中有10盏灯是亮着的。 它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。
发表于 2014-10-25 00:26:07 回复(0)
100以内完全平方数的个数
发表于 2015-10-05 10:29:10 回复(0)
答案10,相当于有个数组a[100],初始为0,假设数组下标从1开始,第i趟表示从下标i开始,将间隔为i的数组元素由0变1,由1变0
即a[i*n]=abs(a[i*n]-1),n=1,2,...且i*n<=100,代码如下
#include <math.h>

int question7()
{
	int i,j,n,index,count=0;
	int a[100]={0};
	//循环100次,每次对数组从第i个开始间隔i取反
	for (i=1;i<=100;i++)
	{
		n=1;
		while(i*n<=100)
		{
			index=i*n-1;
			a[index]=abs(a[index]-1);
			n++;
		}
	}
	for (j=0;j<100;j++)
	{
		if (1==a[j])
		{
			count++;
		}
	}
	return count;
}
发表于 2015-07-06 18:37:19 回复(1)

答案:根据题目意思可以得出以下三个结论:

1)对于每盏灯,当拉动的次数是奇数时,灯就是亮着的,当拉动的次数是偶数时,灯就是关着的。

2)每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。

3)1~100这100个数中有哪几个数,约数的个数是奇数。

由于最开始灯是灭的,所以,只有经过奇数次改变开关状态的灯是亮的,相对应的数学解释就是灯的编号有奇数个不同的约数,一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个,例如:1的约数为1,4的约数为1、2、4,9的约数为1、3、9,以此类推,这100盏灯中有10盏灯是亮着的。它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。

发表于 2018-07-15 21:57:33 回复(0)
这文字是真的抽象!!
发表于 2020-11-18 15:52:15 回复(0)
链接:https://www.nowcoder.com/questionTerminal/03aedf4256484977abbc243645dbc6e4
来源:牛客网

1.对于每盏灯,拉动的次数是奇数时,灯就是亮着的,拉动的次数是偶数时,灯就是关着的。

2.每盏灯拉动的次数与它的编号所含约数的个数有关,它的编号有几个约数,这盏灯就被拉动几次。

3.1——100这100个数中有哪几个数,约数的个数是奇数。我们知道一个数的约数都是成对出现的,只有完全平方数约数的个数才是奇数个。

所以这100盏灯中有10盏灯是亮着的。 它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。

发表于 2017-07-26 19:15:52 回复(0)
   public static void main(String[] args) {
        // TODO code application logic here
        int a []=new int [100];
        int count=0;
        for(int i=0;i<100;i++)
              a[i]=0;//0代表灯灭,1代表灯亮
       for(int i=1;i<=100;i++)//100次操作
            for(int j=0;j<100;j++)
           if((j+1)%i==0 && a[j]==0) a[j]=1;
          else if((j+1)%i==0 && a[j]==1) a[j]=0;
       
       for(int i=0;i<100;i++)
       {  if (a[i]==1)
       { count++;
           System.out.print(i+1+"  ");}
       }
         System.out.print("\n"+count);
    }

发表于 2016-04-21 17:02:25 回复(0)
这道题确实理解如前面几个所说,我想从自己理解的角度再复述一遍:
1. 每跑多少趟,那就代表的是灯泡编号的一个约数,第一趟是1,那么每个灯泡都会被打开,第二趟就代表2,有哪些是含有2的约数呢?就把他们又关上,第三趟代表3,那么就把有3约数的打开...
2. 怎么判断打不打开的状态,约数正如楼上所说都是“成对出现”,那么就是偶数的情况,具体给出的偶数趟的灯泡就是灭的,而奇数趟的灯泡是亮的,那么只有完全平方数的约数是奇数,因此,就只有1、4、9、16、25、36、49、64、81、100这10个数字是亮的
发表于 2024-10-15 17:03:19 回复(0)
这真的是产品经理做的题吗?
发表于 2023-05-06 15:49:55 回复(0)
我觉得这个题用排除法吧
发表于 2022-09-08 15:58:38 回复(0)
其实可以结合排除法 1号灯肯定是亮的(第一趟把它点亮了) 2号灯肯定是灭了的(2有因子2,第二趟灭了2) 3号灯灭(3有因子3) 4:亮(4有因子2,4) 5:灭(因子5) 6:灭(因子2,3,6) 7:灭(因子7) 其实可以看出来有奇数个因子的表示灯会灭,偶数表示灯会亮。 以上已经有两盏灯亮了,答案肯定在CD之间。后面还有9会亮,不用再往下看了,选D
发表于 2017-09-20 20:31:18 回复(0)
我真的好郁闷啊 为毛我在百度2013研发工程师笔试卷B 中填10 他就说我错啊?
发表于 2015-02-16 13:33:46 回复(1)
mqh头像 mqh
10
发表于 2014-12-26 08:57:50 回复(0)
1 4 9 16 25 36 49 64 81 100 是亮着的
总计10个灯
发表于 2014-12-20 11:21:34 回复(0)
public class Test{

}
发表于 2014-12-12 17:31:56 回复(0)
1,4,9,16,25,36,49,64,81,100
发表于 2014-12-10 21:28:20 回复(0)
1,4,9,16,25,36,49,64,81,100
发表于 2014-12-10 21:15:45 回复(0)
流头像
10
发表于 2014-12-10 16:57:47 回复(0)
流头像
10
发表于 2014-12-10 16:42:20 回复(0)