开灯问题

来源:互联网 发布:淘宝软件下载电脑版 编辑:程序博客网 时间:2024/06/09 15:11

有n盏灯,编号为1~n,第一个人把所有灯打开,第二个人按下所有编号为2的倍数开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),一次类推,一共有k个人,问最后哪些灯开着?

输入: 7 3
输出 : 1 5 6 7

# include"stdio.h"
#include"string.h"
#define maxn 1010
int main()
{
 int n,k,first=1,a[maxn];
 
 memset(a,0,sizeof(a));
 scanf("%d%d",&n,&k);
 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]) {
  if(first) first=0;else printf(" ");printf("%d",i);}
  printf("\n");
  return 0;
}

原创粉丝点击