21xrx.com
2025-04-27 13:43:03 Sunday
文章检索 我的文章 写文章
关灯问题的c语言实现
2023-06-18 17:59:41 深夜i     23     0
关灯问题 c语言 数组 循环 条件

关灯问题是一个著名的数学思维题,现在我们可以使用c语言来实现这个问题。在这个问题中,有一排灯泡,一开始它们都是亮着的,然后人们逐个按下了一些灯泡的开关,使得它们的状态发生了改变。现在我们需要找出最终还亮着的灯泡的编号。

首先,我们可以通过创建一个布尔类型的数组来表示灯泡的状态。数组的初始值均为true,表示所有的灯泡都是亮着的。然后,我们按照题目所给的条件,依次改变相应灯泡的状态。最后,我们再扫描一遍数组,输出值为true(即亮着)的元素下标即可。

代码如下:

#include 
#include 
#define N 1000
int main()
{
  bool light[N] = { true };  // 初始化数组,全是true
  int n, k, i, j;
  scanf("%d%d", &n, &k);
  for (i = 1;i <= k;++i) // 模拟开关操作
  {
    for (j = 1;j <= n;++j)
    {
      if (j % i == 0) light[j] = !light[j]; // 改变相应灯泡的状态
    }
  }
  for (i = 1;i <= n;++i) // 输出结果
  {
    if (light[i]) printf("%d ", i);
  }
  return 0;
}

通过这个问题的实现,我们不仅可以熟悉c语言的数组和循环语句等基本语法,还能培养我们的动手能力和思维能力。

生成的

  
  

评论区