一道邏輯題 房間里有100盞電燈


一道挺有意思的邏輯題

房間里有100盞電燈,編號為1,2,3……100,每盞燈上有一個按鈕,初始時燈全都是關的。
       編好號的100位同學由房間外依次走進去,將自己編號的倍數的燈的按鈕全部按一次,例如第一位同學把編號是1的倍數的燈的按鈕按一下(此時100盞燈全亮),第二位同學把編號是2的倍數的燈的按鈕按一下(此時只有50盞燈亮着,50盞被這個人按滅了)……第100位同學把編號是100的倍數的燈(即編號為100的燈)的按鈕按一下,請問依次走完后,還有多少盞燈亮着?


從要做淡定姐的博客上看到的這個邏輯題,感覺很有意思,就說那程序完成下,本來一個很簡單的東西結果用了半個多小時才寫出來,真是慚愧。。。

public class test {

    public static void main(String args[]) {
        int[] lights = new int[100];
        int[] users = new int[100];
        int[] result = new int[100];

        for (int i = 1; i <= 100; i++) {
            lights[i - 1] = i;
            users[i - 1] = i;
        }
        for (int i = 0; i < 100; i++) {
            int user = users[i];
            for (int j = 0; j < 100; j++) {
                int light = lights[j];
                if (light % user == 0) {
                    if (result[j] == 0) {
                        result[j] = 1;
                    } else {
                        result[j] = 0;
                    }
                }
            }
            for (int e = 0; e < 100; e++) {
                if (result[e] == 1) {
                    System.out.print((e + 1) + "-");
                }
            }
            System.out.println();
        }
    }
}

1-4-9-16-25-36-49-64-81-100-

 

 

應該還有更簡單的算法


免責聲明!

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



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