开灯问题

来源:互联网 发布:会声会影x7软件多大 编辑:程序博客网 时间:2024/06/07 06:16

有n盏灯,编号为1~n.第一个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3 的倍数的开关(开着的灯关掉,关着的灯被打开),以此类推,一共有k个人,问最后有哪些灯开着?

import java.util.Scanner;public class Main{    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        boolean[] a;        while(scanner.hasNext()){            int n=scanner.nextInt();            a=new boolean[n+1];            int k=scanner.nextInt();            for(int i=1;i<=k;i++){                for(int j=1;j<=n;j++)                    if(j%i==0){                        a[j]=!a[j];                    }            }            for(int i=1;i<=n;i++){                if(a[i]){                    if(i!=n){                        System.out.print(i+" ");                    }else{                        System.out.print(i);                    }                }            }            System.out.println();        }    }}
0 0
原创粉丝点击