zoukankan      html  css  js  c++  java
  • 百度百灯问题

    题目:

    有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯熄灭一盏,即熄灭第2盏,第4盏,以此类推,
    第三轮改变编号为3的倍数的电灯,第3盏,第6盏,如果原来那盏灯是亮的,就熄灭它,如果原来是灭的,
    就点亮它,以此类推,直到第100轮。问第100结束后,还有多少盏灯泡是亮的?

    思路:

    灯的编号越大,被操作的次数就会越多。例如:第5次操作的时候,前4盏灯就不会再被操作了,第5盏及后面的灯才有可能被操作。

    对于每盏灯,操作的次数是奇数次,灯就是亮的;操作的次数是偶数次,等就是灭的。

    每盏灯被操作的次数等于等所在位置编号的约数的个数。(约数的个数要想是奇数,只能是完全平方数。)

    若 a>=b ,a%b == 0 。则b是a的约数。

    代码:

    for i in range(1,101):     # i 为灯的位置数
        k=0                    #记录第i盏灯被操作的次数
        for j in range(1,i+1): # j 为操作的次数
            if i%j==0:         #当操作的次数,是灯位置数的约数时,灯才会被操作
                k+=1           #记录灯被操作的次数
        if k%2==1:             #被操作次数为奇数的灯是亮的
            print(i)

    输出结果:

    1
    4
    9
    16
    25
    36
    49
    64
    81
    100

    总结:

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

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

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

    只有完全平方数约数的个数才是奇数个。

    所以这100盏灯中有10盏灯是亮着的。

    它们的编号分别是: 1、4、9、16、25、36、49、64、81、100。

  • 相关阅读:
    September 17th 2016 Week 38th Saturday
    【2016-09-16】UbuntuServer14.04或更高版本安装问题记录
    September 16th 2016 Week 38th Friday
    September 11th 2016 Week 38th Sunday
    September 12th 2016 Week 38th Monday
    September 10th 2016 Week 37th Saturday
    September 9th 2016 Week 37th Friday
    c++暂停
    八皇后问题
    ( 转转)Android初级开发第九讲--Intent最全用法(打开文件跳转页面等)
  • 原文地址:https://www.cnblogs.com/doitjust/p/9383920.html
Copyright © 2011-2022 走看看