華為機試 亮著電燈的盞數(求完全平方數的個數)

2021-06-27 20:19:45 字數 749 閱讀 4760

題目:亮著電燈的盞數

一條長廊裡依次裝有n(1≤n≤65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。

有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下;接著第二個學生把號碼凡是2的倍數的電燈的開關拉一下;接著第三個學生把號碼凡是3的倍數的電燈的開關拉一下;如此繼續下去,最後第n個學生把號碼凡是n的倍數的電燈的開關拉一下。n個學生按此規定走完後,長廊裡電燈有幾盞亮著。

注:電燈數和學生數一致。不能寫笨拙的雙重迴圈(優化過的是可以的),會執行超時。本題有執行時間限制(一說10000ms)。

輸入 65535

輸出  255

基本思路:

對於任何一盞燈,由於它原來不亮,那麼當它的開關被按奇數次時,燈是開著的;當它的開關被按偶數次時,燈是關著的;一盞燈的開關被按的次數,恰等於這盞燈的編號的因數的個數;要求哪些燈還亮著,就是問哪些燈的編號的因數有奇數個.顯然完全平方數有奇數個因數。每個數除以乙個數a等於另乙個數b,那麼a和b都是它的因數,於是因數是成對出現的,但是要因數是奇數,就必須a=b所以這個數就必須是乙個是的平方得到的。

綜上所述這道題非常簡單,就是找1-65535中完全平方數的個數。

#includeint main(int argc, char *argv)

printf("%d\n",ans);

}return 0;

}

亮著的電燈數 華為機試題

明確思路,及每個變數的含義及所需要完成的功能 亮著電燈的盞數 一條長廊裡依次裝有n 1 n 65535 盞電燈,從頭到尾編號1 2 3 n 1 n。每盞電燈由乙個拉線開關控制。開始,電燈全部關著。有n個學生從長廊穿過。第乙個學生把號碼凡是1的倍數的電燈的開關拉一下 接著第二個學生把號碼凡是2的倍數的...

華為機試 求最大連續bit數

題目描述 功能 求乙個byte數字對應的二進位制數字中1的最大連續數,例如3的二進位制為00000011,最大連續2個1 輸入 乙個byte型的數字 返回 對應的二進位制數字中1的最大連續數 輸入描述 輸入乙個byte數字 輸出描述 輸出轉成二進位制之後連續1的個數 示例1輸入 輸出方法一分析 直接...

華為機試 輸出含「23」的數

輸入一行數字 123 423 5645 875 186523 在輸入第二行 23 將第一行中含有第二行中 23 的數輸出並排序 結果即 123 423 186523 先排序,順序遍歷每個數字,看是否含有23 include includeint cmp const void a,const void...