題目
題目描述
初始時(shí)有 n 個(gè)燈泡關(guān)閉贸诚。 第 1 輪方庭,你打開(kāi)所有的燈泡。 第 2 輪酱固,每?jī)蓚€(gè)燈泡你關(guān)閉一次械念。 第 3 輪,每三個(gè)燈泡切換一次開(kāi)關(guān)(如果關(guān)閉則開(kāi)啟运悲,如果開(kāi)啟則關(guān)閉)龄减。第 i 輪,每 i 個(gè)燈泡切換一次開(kāi)關(guān)班眯。 對(duì)于第 n 輪希停,你只切換最后一個(gè)燈泡的開(kāi)關(guān)。 找出 n 輪后有多少個(gè)亮著的燈泡署隘。
示例:
輸入: 3
輸出: 1
解釋:
初始時(shí), 燈泡狀態(tài) [關(guān)閉, 關(guān)閉, 關(guān)閉].
第一輪后, 燈泡狀態(tài) [開(kāi)啟, 開(kāi)啟, 開(kāi)啟].
第二輪后, 燈泡狀態(tài) [開(kāi)啟, 關(guān)閉, 開(kāi)啟].
第三輪后, 燈泡狀態(tài) [開(kāi)啟, 關(guān)閉, 關(guān)閉].
你應(yīng)該返回 1宠能,因?yàn)橹挥幸粋€(gè)燈泡還亮著。
題解
簡(jiǎn)單數(shù)論磁餐,對(duì)于n個(gè)燈泡 進(jìn)行n輪燈泡開(kāi)關(guān)切換违崇。第 i 輪,每 i 個(gè)燈泡切換一次開(kāi)關(guān)诊霹。
那么每個(gè)燈泡只有在i是x燈泡的因子時(shí)才會(huì)被切換羞延,而且在會(huì)進(jìn)行n輪切換也就是說(shuō)x燈泡的所有因子都會(huì)被遍歷,而對(duì)于一個(gè)數(shù)的因子個(gè)數(shù) 普遍都是偶數(shù)個(gè) 也就是n*m=x(n!=m)模式除了平方數(shù)會(huì)出現(xiàn)n*n=x 也就是說(shuō)只有平方數(shù)是奇數(shù)個(gè).那么這道題所求的不就是n以?xún)?nèi)(包括n)的平方數(shù)個(gè)數(shù)嗎脾还,那么對(duì)n開(kāi)個(gè)根向下取整就好了
代碼
class Solution {
public int bulbSwitch(int n) {
return (int)Math.sqrt(n);
}
}