nyoj 题目77 开灯问题

来源:互联网 发布:淘宝嘉年华到什么时候 编辑:程序博客网 时间:2024/05/29 18:05

开灯问题

时间限制:3000 ms | 内存限制:65535 KB
难度:1
描述

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

输入
输入一组数据:n和k
输出
输出开着的灯编号
样例输入
7 3
样例输出
1 5 6 7
#include<stdio.h>#include<string.h>int main(){int k,a[1001],n,i,j;memset(a,0,sizeof(a));        //把数组a清零 while(~scanf("%d%d",&n,&k)){for(i=2;i<=k;i++)   for(j=i;j<=n;j+=i)       //一定要是   j+=i 因为要i的倍数    {     if(a[j]==1)       a[j]=0;  else    a[j]=1;      }  for(i=1;i<=n;i++)  if(a[i]==0)    //cnt++;printf("%d ",i);printf("\n");}return 0;}

0 0