華為上機測試題(求亮燈數量-java)


PS:自己寫的,自測試OK,供大家參考。

/*

一條長廊里依次裝有n(1 ≤ n ≤ 65535)盞電燈,從頭到尾編號1、2、3、…n-1、n。每盞電燈由一個拉線開關控制。開始,電燈全部關着。
有n個學生從長廊穿過。第一個學生把號碼凡是1的倍數的電燈的開關拉一下;接着第二個學生把號碼凡是2的倍數的電燈的開關拉一下;接着第三個學生把號碼凡是3的倍數的電燈的開關拉一下;
如此繼續下去,最后第n個學生把號碼凡是n的倍數的電燈的開關拉一下。n個學生按此規定走完后,長廊里電燈有幾盞亮着。
注:電燈數和學生數一致。

*/

 1 import java.util.Scanner;
 2 
 3 public class Lamp {
 4     
 5     public static void main(String[] args) {
 6         System.out.println("請輸入長廊里燈的數量:");
 7         Scanner s = new Scanner(System.in);
 8         int n = s.nextInt();
 9         s.close();
10         
11         if((n < 1) || (n > 65535))
12         {
13             System.out.println("輸入數值超出范圍!");
14         }
15         else
16         {
17             System.out.println("長廊里有 "+getLampNum(n)+" 盞燈亮着");
18         }
19     }
20 
21     private static int getLampNum(int n) {
22         
23         int ret = 0;
24         boolean[] flag = new boolean[n];
25         //初始化電燈,全部關着
26         for(int i = 0; i < n; i++)
27         {
28             flag[i] = false;
29         }
30         
31         //拉燈操作,true為亮,滅為false
32         for(int i = 1; i <= n; i++)
33         {
34             for(int j = i; j <= n; j++)
35             {
36                 if(0 == j%i)
37                 {
38                     flag[j-1] = !flag[j-1];
39                 }
40             }
41         }
42         
43         //找出所有亮的燈
44         for(int i = 0; i < n; i++)
45         {
46             if(flag[i])
47             {
48                 ret++;
49             }
50         }
51         
52         return ret;
53     }
54 
55 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM