• 百度百灯问题


    题目:

    有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。

  • 相关阅读:
    Linux命令基础
    ubuntu16.04修改ssh的端口
    ubuntu16.04没有办法使用CRT,或者SSH工具的解决办法
    如何启动、关闭和设置ubuntu防火墙
    ubuntu远程桌面软件vnc。
    CAD安装激活失败的原因
    如何调出电脑的任务管理器
    如何查看Windows10连接的WiFi密码
    如何知道和你在一个局域网的电脑个数?
    如何快速连上另一台电脑已共享的打印机
  • 原文地址:https://www.cnblogs.com/doitjust/p/9383920.html
Copyright © 2020-2023  润新知