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;
    }
}
相关推荐
AGANCUDA几秒前
qt使用osg显示pcd点云的例子
开发语言·qt
2301_815686451 分钟前
extern
java·开发语言
q***56385 分钟前
Java进阶-SPI机制
java·开发语言
曾经的三心草16 分钟前
基于正倒排索引的Java文档搜索引擎2-实现Index类
java·python·搜索引擎
g***B73820 分钟前
Rust在网络中的Tokio
开发语言·网络·rust
寻找华年的锦瑟28 分钟前
Qt-侧边栏布局
开发语言·qt
1560820721929 分钟前
QT的ComboBox使用QToolTip显示提示信息
开发语言
tyler-泰勒31 分钟前
QT:基础概念操作
开发语言·qt
9***P3341 小时前
Rust在网络中的Rocket
开发语言·后端·rust