zoukankan      html  css  js  c++  java
  • 一道逻辑题 房间里有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-

    应该还有更简单的算法

  • 相关阅读:
    setTimeout和setInterval的区别(面试题)
    什么是跨域?列出几种JS跨域解决方法?(前端面试题)
    建网站的流程
    CSS Sprite(雪碧图)简单使用
    前端不得不说的性能优化
    面试题
    前端如何做好SEO优化
    JavaScript string字符串对象常见方法
    微信号复制跟跳转——clipboard.js
    微信号复制跟跳转——execCommand()
  • 原文地址:https://www.cnblogs.com/t2xingzhe/p/2735095.html
Copyright © 2011-2022 走看看