开灯问题

来源:互联网 发布:c语言余弦相似度 编辑:程序博客网 时间:2024/05/29 08:33

描述

有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000

输入

输入一组数据:n和k

输出

输出开着的灯编号

样例输入

7 3

样例输出

1 5 6 7

//乒乓开关 a[i]=1-a[i]#include <stdio.h>#include <string.h>#define N 1000int main() {    int a[N], n, k;    scanf("%d %d", &n, &k);    memset(a,0,sizeof(a));    for(int i = 1; i <= k; i++) {        for(int j = 1; j <= n; j++) {            if(j % i == 0)                a[j] = !a[j];        }    }    for(int i = 1; i <= n; i++)        if(a[i])            printf("%d ", i);    return 0;}
原创粉丝点击