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;
    }
}
相关推荐
乐观勇敢坚强的老彭4 分钟前
GESP一级核心算法:循环与条件判断的结合
java·数据结构·算法
noipp7 分钟前
推荐题目:洛谷 P1737 [NOI2016] 旷野大计算
linux·数据结构·算法
雪宫街道7 分钟前
SpringBoot 向 IOC 容器注册组件的两种姿势:@Configuration 与 @Import
java·spring boot·后端·spring
techdashen11 分钟前
Cargo 1.94 开发周期全解析
开发语言·后端·rust
QiLinkOS18 分钟前
极客精神与商业思维的融合实践(2)
c语言·c++·人工智能·算法·开源协议
charlie11451419120 分钟前
现代C++特性指南——constexpr 构造函数与字面类型
开发语言·c++
北城以北888823 分钟前
虚拟机安装JDK,Tomcat,部署项目
java·开发语言·tomcat
江华森26 分钟前
Python 3 实战教程:从零基础到项目实战
开发语言·python
Wonderful U30 分钟前
Python+Django实战|在线音乐分享平台:音乐上传、歌手专辑管理、在线播放、自定义歌单、收藏点赞、评论互动
开发语言·python·django
终将老去的穷苦程序员31 分钟前
基于Android Studio开发的安卓图书借阅管理系统
java·sqlite·android studio·android-studio