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。

  • 相关阅读:
    "Blessing of Dimisionality: High Dimensional Feature and Its Efficient Compression for Face Verification"学习笔记
    java删除目录下符合条件的文件
    java nio buffer读取数据乱码问题
    MySql 存储过程实例(附完整注释)
    mysql truncate、delete与drop区别
    Java的位运算符—与(&)、非(~)、或(|)、异或(^)
    mysql 用户管理和权限设置
    Sublime Text3 安装Markdown
    session 超时设置
    Nginx配置详解
  • 原文地址:https://www.cnblogs.com/doitjust/p/9383920.html
Copyright © 2011-2022 走看看