开灯问题

来源:互联网 发布:ssh服务默认端口 编辑:程序博客网 时间:2024/05/29 09:39

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

#include<stdio.h>
int main()
{
 int k,n,i,j,m,f;
    scanf("%d %d",&n,&k);
    int a[n+1];
    i=1;
    while(i<=n)
    {
       a[i]=-i;
       i++;
    }
    for(m=1;m<=k;m++)
    {
       for(j=1;j<=n;j++)
       {
          if(j%m==0)
          a[j]*=-1;
        }
    }
    for(f=1;f<=n;f++)
    {
       if(a[f]>0)
         printf("%d ",a[f]);
    }
return (0); 
}

原创粉丝点击