算法面試題:多人依次按燈的開關

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <script type="text/javascript">
            window.onload = function() {
                var r=3;
                var d=9;
                var arr = [];
                for (var j=0;j<=d+1;j++) {
                    arr.push(0);
                }
                for (var i=1;i<=r;i++) {
                    for(var j=1;j<=d;j++){
                        debugger;
                        if (j%i===0) {
                            arr[j]=(arr[j]===0?1:0);
                        }
                    }
                }
                var str ="";
                for(var k=1;k<=d;k++){
                    str+=arr[k]+" | ";
                }
                document.getElementById("show").innerHTML = str;
            }
        </script>
    </head>

    <body>
        <div id="">
            <br/> 問題:
            <br/> 有n盞燈,編號爲1~n,第1個人把所有燈打開,第2個人按下所有編號爲2的倍數的開關(這些燈將被關掉),
            <br/> 第3個人按下所有編號爲3的倍數的開關(其中關掉的燈被打開, 開着燈將被關閉),依此類推。
            <br/> 一共有k個人,問最後有哪些燈開着?
            <br/> 輸入:n和k,輸出開着的燈編號。k≤n≤1000。
            <br/> 樣例輸入:
            <br/> 7  3
            <br/>
            <br/> 樣例輸出:
            <br/>
            <br/> 1 5 6 7
            <br/> 分析:
            <br/> 用 a[1],a[2],......,a[n] 表示編號爲1,2,3,.......,n 的燈是否開着。
            <br/>
            <br/> ---------------------
            <br/>0:爲關燈;1:爲開燈。
            <br/>
        </div>
        <div id="show">
        </div>
    </body>

</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章