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; 
}
上一篇下一篇

猜你喜欢

热点阅读