美文网首页
开灯问题

开灯问题

作者: 耶乐 | 来源:发表于2020-12-27 16:01 被阅读0次

个人学习笔记,有错误或者建议欢迎指出。

/*开灯问题

  有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关闭),

  第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有

  k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号。k<=n<=1000

*/

//#define LOCAL

#include <stdio.h>

#define max_n 1000

int main()

{

//输入输出重定向,方便读入测试文档

#ifdef LOCAL

FILE* stream1;

freopen_s(&stream1, "data.in", "r", stdin);

freopen_s(&stream1, "data.out", "w", stdout);

#endif

int n, k, a[max_n];

//读入数据直到没有数据

while (scanf_s("%d %d", &n, &k) != EOF)

{

//将n盏灯全部置0,即关闭

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

{

a[i] = 0;

}

//循环k个人

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

{

//循环n盏灯

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

{

//如果第j盏灯恰好是第j个人的倍数,则灯的状态改变

if (j % i == 0)

{

if (a[j - 1] == 0)

a[j - 1] = 1;

else

a[j - 1] = 0;

}

}

}

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

{

if (a[i] == 1)

printf("%d ", i + 1);

}

printf("\n");

}

return 0;

}

相关文章

  • 开灯问题

    问题 有 n 盏灯,编号 1~n 。第一个人把所有的灯打开,第二个人按下所有编号为 2 的倍数的开关(这些灯将被关...

  • 开灯问题

  • 开灯问题

    个人学习笔记,有错误或者建议欢迎指出。 /*开灯问题 有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下...

  • 3-2开灯问题

  • 开灯~

    开灯继续~

  • 开灯

    开 灯 睁开眼,天太早,还未放亮, 空荡荡,静悄悄,残夜阑珊。 黑暗中, 瞪大眼睛出了神, 余温消...

  • 〖开灯状态〗

    〖开灯状态〗 ——〈开灯心语〉 开灯状态—— 就是心灵解放的状态, 心灵的解放: 就是把生命中 —...

  • 〖开灯文化〗

    〖开灯文化〗 ——〈开灯心语〉 共同心愿—— 打开窗户说亮话; 说话的人—— 用长明灯暖人心; 听...

  • 开灯节

    每年正月十一,番禺区一个村庄,这里每年都以开灯的节日聚在一起,约上亲朋好友,延开百席,热闹非凡!还有很多有意思的吉...

  • 开灯睡觉

    我不喜欢绝对的黑暗 所以我最近喜欢上了开灯睡觉 黑夜终将结束 黑夜的尽头是黎明 是光亮 而光明不会结束 所以我 开...

网友评论

      本文标题:开灯问题

      本文链接:https://www.haomeiwen.com/subject/lwmonktx.html