電燈問題(HDJ2053 )

2021-05-01 07:45:34 字數 594 閱讀 7679

【問題如下】

n盞燈排成一排,從1到n按順序依次編號,有n個人也從1到n編號。第乙個人(1號)將燈全部關掉,第二個人(2號)將凡是2和2的倍數的燈開啟,第三個人(3號)將凡是3和3的倍數的燈做相反的處理,以後的人都和三號一樣,將凡是與自己編號相同的燈和是自己編號倍數的燈做相反的處理,請問:當第n個人操作後,哪盞燈是亮的。(n<1000)

【**詳情】

在上題中,只要我們想想,就會發現乙個事實。

例如:16=1*16=2*8=4*4

14=1*14=2*7

上面的式子告訴我們因子是成對出現的。

16號燈的狀態是關著的,而14號燈的狀態是關著的。

為什麼會這樣呢?首先,我們要知道,這道題一開始燈的狀態是全開的。

其次,我們來考慮16號燈,我們會發現,編號為1的人將把16號燈關上,而編號為16號的人會再次將它開啟,對應的我們會發現一條定理:

編號為n的燈的狀態是怎樣的,完全取決於n的因子的個數,因子為偶數,狀態不變,因子為奇數,狀態改變。

要想判斷乙個數的因子數是奇是偶,我們只需判斷這個數是否為完全平方數即可。就像16=4*4一樣。

【**詳情】 注:

如哪位高手發現錯誤,還請相告!

其他問題2

1.題目 輸入某年某月某日,判斷這一天是這一年的第幾天?public static void print14 int year,int month,int day int daysofyear day if month 1 if month 2 isleapyear year long end sy...

貪婪問題2

13 有一艘大船準備用來裝載貨物。所有待裝貨物都裝在貨箱中且所有貨箱的大小都一樣,但貨箱的重量都各不相同。設第i 個貨箱的重量為wi 1 i n 而貨船的最大載重量為c,如何在貨船上裝入最多的貨物。13 有一艘大船準備用來裝載貨物。所有待裝貨物都裝在貨箱中且所有貨箱的大小都一樣,但貨箱的重量都各不相...

六 問題 2 sum問題

兩數之和問題 給定乙個列表和乙個整數,從列表中找到兩個數,使得兩數之和等於給定的數,返回兩個數的下標。題目保證有且只有一組解 def two sum 1 nums,target 時間複雜度 o n n param nums param target return n len nums for i i...