zoukankan      html  css  js  c++  java
  • 319. Bulb Switcher

    There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every second bulb. On the third round, you toggle every third bulb (turning on if it's off or turning off if it's on). For the i-th round, you toggle every i bulb. For the n-th round, you only toggle the last bulb. Find how many bulbs are on after n rounds.

    Example:

    Input: 3
    Output: 1 
    Explanation: 
    At first, the three bulbs are [off, off, off].
    After first round, the three bulbs are [on, on, on].
    After second round, the three bulbs are [on, off, on].
    After third round, the three bulbs are [on, off, off]. 
    So you should return 1, because there is only one bulb is on.

    Approath #1: Math. [Java]

    class Solution {
        public int bulbSwitch(int n) {
            return (int)Math.sqrt(n);
        }
    }
    

      

    Analysis:

    A bulb ends up on if it is switched an odd number of times.

    Call them bulb 1 to bulb n. Bulb i is switched in round d if and only if d divides i. So bulb i ends up on if and only if it has an odd number of divisors.

    Divisors come in pairs, like i = 12 has divisors 1 and 12, 2 and 6, and 3 and 4. Except when i is a square, like 36 has divisors 1 and 36, 2 and 18, 3 and 12, 4 and 9, and double divisor 6. So bulb i ends up on if and only if i is a square.

    So just count the square numbers.

    Let R = int(sqrt(n)). That is the root of the largestsquare in the range [1, n]. And 1 is the smallest root. So you have the roots from 1 to R, that's R roots. Which correspond to the R squares. So int(sqrt(n)) is the answer. 

    Reference:

    https://leetcode.com/problems/bulb-switcher/discuss/77104/Math-solution..

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    jQuery插件开发——全屏切换插件
    原生JS实现全屏切换以及导航栏滑动隐藏及显示——修改
    CSS 3学习——animation动画
    CSS 3学习——transition 过渡
    CSS 3 学习——transform 3D转换渲染
    CSS 3学习——transform 2D转换
    消息过滤
    jms消息组成
    vim常用命令整理
    知识碎片
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10805330.html
Copyright © 2011-2022 走看看