zoukankan      html  css  js  c++  java
  • 开灯问题

    问题描述:

         开灯问题,有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。

    算法实现:

     1 package com.ysw.test;
     2 
     3 import java.util.Arrays;
     4 import java.util.Scanner;
     5 
     6 /*
     7  * 问题描述: 开灯问题,有n盏灯,编号为1~n。
     8  * 第一个人把所有灯都打开,
     9  * 第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),
    10  * 第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),
    11  * 以此类推。一共有k个人,问最后有哪些灯开着?
    12  * 输入n和k,输出开着的灯的编号。
    13  * 
    14  */
    15 public class openAndCloseLantern {
    16 
    17     /**
    18      * @param args
    19      */
    20     public static void main(String[] args) {
    21         // 定义数组
    22         int myArray[] = new int[1000];
    23         // 函数:Arrays.fill(int myArray[],int value)将数组元素的值全部置为0
    24         Arrays.fill(myArray, 0);
    25         // 从键盘读取读取灯的数量和人的数目
    26         Scanner reader = new Scanner(System.in);
    27         // 灯的盏数
    28         int lanternNum = reader.nextInt();
    29         // 人的数量
    30         int personNum = reader.nextInt();
    31         for (int i = 1; i <= personNum; i++) {
    32             for (int j = 1; j <= lanternNum; j++) {
    33                 // 当j%i==0的时候说明灯的明或者亮的状态发生了改变
    34                 if (j % i == 0) {
    35                     // 改变灯的状态:用数字1代表亮,用数字0表示灭
    36                     myArray[j] = (myArray[j] == 1) ? 0 : 1;
    37                 }
    38             }
    39         }
    40         // 输出元素值为1灯的标号,表示经过一系列操作之后依然亮着的灯的编号
    41         for (int i = 1; i <= lanternNum; i++) {
    42             if (myArray[i] != 0) {
    43                 System.out.print(i + " ");
    44             }
    45         }
    46         System.out.println();
    47     }
    48 
    49 }
  • 相关阅读:
    微软企业库5.0学习笔记实战数据验证模块高级篇
    总结一些常用的CMS
    JS类库
    sql2
    前端开发必须知道的CSS
    JS实现非图片动态loading
    Microsoft SQL Server 2005 提供了一些工具来监控数据库
    js实现Tooltip
    Js动画基础
    仿iGoogle自定义首页模块拖拽
  • 原文地址:https://www.cnblogs.com/ysw-go/p/5859559.html
Copyright © 2011-2022 走看看