• 开灯问题


    import java.util.Scanner;
    
    /**
     * 开灯问题:
     * 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),
     * 第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。
     * 一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000
     * 
     * 输入n=3,k=7;
     * 南阳oj77  71  252
     */
    public class Main {
    
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		int n, k;
    		n = sc.nextInt();
    		k = sc.nextInt();
    		
    		int[] arr = new int[n+1];
    		
    		for(int i=0; i<=n; i++) {
    			arr[i] = i;//全开灯
    		}
    		
    		for(int j=2; j<=k; j++) {
    			for(int i=1; i<=n; i++) {
    				if(i%j==0) {//大数对小数取摸
    					if(arr[i]!=0) {
    						arr[i] = 0;//关灯置0
    					}else {
    						arr[i] = i;
    					}
    				}
    			}
    		}
    		
    		//输出--1就输出
    		for(int i=1; i<=n; i++) {
    			if(arr[i]!=0) {//输出还开着的灯
    				System.out.print(i + " ");
    			}
    		}
    		
    	}
    }
    

      

  • 相关阅读:
    javascript学习笔记1
    html的那些小小细节
    高级排序之希尔排序
    归并排序
    java 块语句 和引用类型
    扩展思维
    javase jdk 环境变量 涵义
    java 冒泡排序 二分查找 选择排序 插入排序
    kafka原理
    java web 程序---注册页面密码验证
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/8832656.html
Copyright © 2020-2023  润新知