1.题目描述:
假设有 N 蓋灯 (N 为不大于 5000 的正整数),从1到 N 按顺序依次编号,初始时全部处于开启状态;第一个人(1 号)将灯全部关闭,第二个人(2 号)将编号为2的倍数的灯打开,第三个人(3 号)将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。问当第 个人操作完之后,有哪些灯是关闭着的?
2.输入格式
输入为一行,一个整数 N,为灯的数量。
3.输出格式
输出为一行,按顺序输出关着的灯的编号。编号与编号之间间隔一个空格。
4.输入输出样例
输入1:
10
输出1:
1 4 9
输入2:
5
输出2:
1 4
6.C语言方式代码:
#include <stdio.h>
int main() {
int N;
scanf("%d", &N); // 输入灯的数量
// 创建一个数组来表示灯的状态,1表示开启,0表示关闭
int lights[N + 1]; // 从1到N,所以大小为N+
标签:输出,方式,int,代码,关闭,编号,编写,输入
From: https://blog.csdn.net/zxn275266/article/details/141231964