• (day6) 319. 灯泡开关


    题目: 初始时有 个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第 i 轮,每 个灯泡切换一次开关。 对于第 轮,你只切换最后一个灯泡的开关。 找出 轮后有多少个亮着的灯泡。

    示例:

    输入: 3
    输出: 1 
    解释: 
    初始时, 灯泡状态 [关闭, 关闭, 关闭].
    第一轮后, 灯泡状态 [开启, 开启, 开启].
    第二轮后, 灯泡状态 [开启, 关闭, 开启].
    第三轮后, 灯泡状态 [开启, 关闭, 关闭]. 
    
    你应该返回 1,因为只有一个灯泡还亮着。

    思路: 举例: 1 代表开, 0 代表关

    输入: 000000000

    第一轮 : 111111111

    第二轮 : 10 10 10 10 1

    第三轮: 100 011 100

    第四轮 : 1001 1111 0

    第五轮 : 10010 1110

    第六轮 : 100100 110

    第七轮 : 1001000 10

    第八轮 : 10010000 0

    第九轮 : 100100001

    结果: 3

    总结出来规律:

    比如,

    对于第四个灯泡, 会切换开关的轮数是 第一轮, 第二轮, 第四轮, 以后就不会变,

    对于第九个灯泡, 会切换开关的轮数是 第一轮, 第三轮, 第九轮 以后就不会变

    我们发现 : 能开方的数都会切换三次而处于亮的状态

    所以, 重点来了, 只需要返回平方根就行了 ! ! !

    js实现:

    var bulbSwitch = function (n) {
          if (n <= 0) {
            return 0;
          } else {
            return Math.floor(Math.sqrt(n))
          }
        };
  • 相关阅读:
    [刷题] IDA*
    [BZOJ1330] Editing a Book
    [BZOJ5449] 序列
    [刷题] 搜索剪枝技巧
    [XJOI3529] 左右
    [CF920E] Connected Components?
    [第18届 科大讯飞杯 J] 能到达吗
    洛谷 P4779 【模板】单源最短路径(标准版)
    洛谷 P1175 表达式的转换
    pipioj 1291 中缀表达式转后缀表达式I
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/9490586.html
Copyright © 2020-2023  润新知