算法面试题:多人依次按灯的开关

<!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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值