您的位置:首页 > 其它

NYOJ 77 开灯问题

2016-01-19 21:08 323 查看

开灯问题

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

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

输入输入一组数据:n和k输出输出开着的灯编号样例输入
7 3

样例输出
1 5 6 7

来源经典算法上传者首席执行官

本来以为会TLE谁知道A了……于是决定贴上来。

应该有更好的方法,但是我现在没想出来,以后再想想好了。

#include<stdio.h>
#include<string.h>
int a[1111];
int b[1111];
int main()
{
int n,k;
int i,j;
while(~scanf("%d%d",&n,&k))
{
memset(a,0,sizeof(a));
for(i=1;i<=n;i++)
{
for(j=1;j<=k;j++)
{
if(i%j==0)
a[i]++;
}
}
j=0;
for(i=1;i<=n;i++)
{
if(a[i]%2==1)
{
b[j++]=i;
}
}
for(i=0;i<j-1;i++)
printf("%d ",b[i]);
printf("%d\n",b[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: