3-2开灯问题
2019-08-14 本文已影响0人
始于尘埃
#include <stdio.h>
#include <string.h>
#define maxn 1010
int a[maxn];
int main(){
int n,k,i,j,first = 1; //first为设定的输出条件,判断是不是第一个元素
memset(a,0,sizeof(a));// 初始化数组,只能初始化为0
scanf("%d%d",&n,&k);
for(i = 1; i<=k; i++){
for(j = 1; j<=n; j++){
if(j % i == 0) a[j] = !a[j]; //这种运算非常巧妙(很形象的表示关灯和开灯的行为)
}
}
for(i = 1; i<=n; i++){
if(a[i]){
if(first) first = 0; //必须按照规定的合适进行输出:如果没有设置first,而是直接先输出值,在输出空格,最后会多出来一个空格
else
printf(" ");
printf("%d",i);
}
}
printf("\n");
return 0;
}