Problema de iluminación

Límite de tiempo: 1000ms

Límite de memoria: 256M

Tema Descripción:

Hay k luces, todas las luces están apagadas y hay interruptores debajo de las luces, numerados 1-k, hay k estudiantes, numerados 1-k, y caminan debajo de las luces por turnos. Si los estudiantes encuentran que el número de las luces por las que pasan es divisible por su propio número, luego jale el interruptor de la luz (apagado para encender, encendido para apagar) y pregunte qué luces están encendidas al final.

Introduzca la descripción:

número k

Descripción de salida:

Número de todas las luces que están encendidas

insinuación:

1<=k<=100000

Análisis del tema:

Esta pregunta es extraña, porque las luces y las personas están numeradas 1-k, por lo que las luces deben estar encendidas al final.

Código:

package 亮灯问题;

import java.util.*;

/**
 * @author 江七
 * @version 1.0
 * @date 2021/9/30 10:21
 */
public class Main {
    
    
    public static void main(String[] args) {
    
    
        // 如果有其他情况需要判断 可修改示例代码
        Scanner cin = new Scanner(System.in);
        int k = cin.nextInt();
        int[] sum = getLightOnNum(k);
        String result = "";
        for (int num : sum) {
    
    
            result += num + ",";
        }
        System.out.println(result.substring(0, result.length() - 1));
    }

    // 请补齐方法
    public static int[] getLightOnNum(int k) {
    
    
        Map<Integer, Boolean> map = new HashMap<>();
       
        for (int i = 1; i <=k; i++) {
    
    //灯初始化为全熄灭状态
            map.put(i, false);
        }
        for (int i = 1; i <= k; i++) {
    
    //人的编号变化
            for (int j = 1; j <= k; j++) {
    
    //灯的编号变化
                if (j % i  == 0) {
    
    
                    map.put(j, !map.get(j));
                }
            }
        }
        List<Map.Entry<Integer, Boolean>> list = new ArrayList<>(map.entrySet());
        List<Integer> list1 = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
    
    //获取灯亮的编号
            if (list.get(i).getValue()) {
    
    
                list1.add(list.get(i).getKey());
            }
        }
        int[] nums = new int[list1.size()];//返回数组
        for (int i = 0; i < nums.length; i++) {
    
    
            nums[i] = list1.get(i);
        }
        return nums;
    }
}

Los resultados muestran que:

Supongo que te gusta

Origin blog.csdn.net/m0_46502538/article/details/120563745
Recomendado
Clasificación