oj赛氪算法练习

开关灯2

java 复制代码
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();

        ArrayList<Integer> result = findClosedLamps(N);

        // 输出结果
        for (int i : result) {
            System.out.print(i + " ");
        }
    }

    private static ArrayList<Integer> findClosedLamps(int N) {
        ArrayList<Integer> closedLamps = new ArrayList<>();

        // 初始化数组,全部设置为 true 表示灯都是开着的
        boolean[] lamps = new boolean[N + 1];

        // 开关灯操作
        for (int i = 2; i <= N; i++) {
            for (int j = i; j <= N; j += i) {
                lamps[j] = !lamps[j];
            }
        }

        // 找到关闭的灯的编号
        for (int i = 1; i <= N; i++) {
            if (!lamps[i]) {
                closedLamps.add(i);
            }
        }

        return closedLamps;
    }
}
相关推荐
handsomezqh3 分钟前
洛谷U611548 助教的比拼
c++·算法
小李小李快乐不已4 分钟前
图论理论基础(4)
c++·算法·图论·迭代加深
好易学·数据结构10 分钟前
可视化图解算法72:斐波那契数列
数据结构·算法·leetcode·动态规划·力扣·牛客网
m0_7400437317 分钟前
Axios拦截器 -- 请求拦截器和响应拦截器
开发语言·前端·javascript
数据门徒27 分钟前
《人工智能现代方法(第4版)》 第6章 约束满足问题 学习笔记
人工智能·笔记·学习·算法
FPGA_无线通信31 分钟前
OFDM 频偏补偿和相位跟踪(1)
算法·fpga开发
qq_3482318533 分钟前
Spring Boot开发过程中常见问题
java·spring boot·后端
程序修理员35 分钟前
java+vue实现文件下载进度条
java·开发语言·vue.js
梁正雄40 分钟前
10、Python面向对象编程-2
开发语言·python