码迷,mamicode.com
首页 > 其他好文 > 详细

Bulb Switcher

时间:2016-08-06 23:19:21      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

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 ith round, you toggle every i bulb. For the nth round, you only toggle the last bulb. Find how many bulbs are on after n rounds.

Example:

Given n = 3. 
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.

解题思路:找规律。发现对于数字6来说其因子有1,2,3,6,其因子个数为偶数。对于数字25来说其因子有1,5,25,其因子个数为奇数。题目的要求是求最后还是ON状态的数目,通过观察可以发现只有因子个数为奇数的数字最后才是ON状态。进一步观察发现只有是二次幂的数即能被开方的数才有奇数个因子。
因此,求ON的个数就是求1~n有多少个数能被求平方的。我们知道1~n中一共有sqrt(n)个数是squre number。
1 public class Solution {
2     public int bulbSwitch(int n) {
3         return (int)Math.sqrt(n);
4     }
5 }

 

Bulb Switcher

标签:

原文地址:http://www.cnblogs.com/FLAGyuri/p/5744979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!