问题描述:】有100个开关控制100盏灯,编号1-100。开始时全部开关朝上(灯亮),然后对100个开关进行多遍操作,第一遍操作把1的倍数的开关反向拨动,第二遍操作把2的倍数的开关反向拨动,....第n遍操作把n的倍数的开关反向拨动。问:100遍以后哪些灯处于熄灭状态。
下面是代码实现部分:
#include <stdio.h>
int main() {
int switches[100] = {0}; // 0表示开,1表示关
// 对100个开关进行100遍操作
for (int i = 1; i <= 100; i++)
{
for (int j = i - 1; j < 100; j += i)
{
switches[j] = !switches[j]; // 反向拨动开关
}
}
// 输出处于熄灭状态的灯
printf("处于熄灭状态的灯的编号:");
for (int i = 0; i < 100; i++)
{
if (switches[i] == 1)
{
printf("%d ", i + 1);
}
}
printf("\n");
return 0;
}
运行结果: