您的位置:首页 > 其它

开灯问题

2016-05-16 19:53 357 查看
问题简述:有N个灯(并编号1.2.3.4…..n),K个人。第一个人打开所有灯,第二个人按下2的倍数开关,第三个人按下3的倍数开关,以次类推。。。。问最后有哪些灯还是亮着的,

解析:只要解决如何表示灯的开与关,这个问题就基本上解决了,这里先灯默认为关,即0。再每次按下开关就执行一次a[j]=!a[j],看最后的状态就OK!

include “stdio.h”

include “string.h”

int a[1010];

int main()

{

int n, k, first=1;

memset(a,0,sizeof(a)); //将数组a[1010]置零,即默认为关闭状态。

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]; //a[j]=!a[j](1与0,翻转,1为开,0为关)

}

for(int i=1;i<=n;i++)

if(a[i])

{

if(first) first=0;

else printf(” “);

printf(“%d”,i);

}

printf(“\n”);

return 0;

}

小结:找到核心问题,明确表示方法,最后写出代码,OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: