C++ 中的灯泡开关


假设有 n 个最初处于关闭状态的灯泡。我们首先打开所有灯泡。然后,我们关闭每隔一个灯泡。在第三轮,我们切换每个第三个灯泡(如果关闭则打开,如果打开则关闭)。类似地,对于第 i 轮,我们切换每个第 i 个灯泡。对于第 n 轮,我们只切换最后一个灯泡。因此,我们必须找到 n 轮后有多少个灯泡是打开的。因此,如果输入是 3,则结果将为 1。这是因为 -

  • 首先,三个灯泡为 [关,关,关]。
  • 第一轮后,三个灯泡为 [开,开,开]。
  • 第二轮后,三个灯泡为 [开,关,开]。
  • 第三轮后,三个灯泡为 [开,关,关]。

为了解决这个问题,我们将遵循以下步骤 -

  • 此步骤很简单,我们必须找到 n 的平方根并返回。

让我们看看以下实现以获得更好的理解 -

示例

 实时演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int bulbSwitch(int n) {
      return sqrt(n);
   }
};
main(){
   Solution ob;
   cout << (ob.bulbSwitch(3));
}

输入

3

输出

1

更新于: 2020年5月2日

1K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始
广告