假设有最初关闭的n个灯泡。我们首先打开所有灯泡。然后,我们每隔一秒关闭一次灯泡。在第三轮中,我们切换第三个灯泡(如果熄灭则打开,如果点亮则熄灭)。同样,对于第i轮,我们切换每个i灯泡。对于第n轮,我们仅切换最后一个灯泡。因此,我们必须找出n个回合后打开多少个灯泡。因此,如果输入为3,则结果将为1。这是因为-
首先,三个灯泡是[off,off,off]。
在第一轮之后,三个灯泡都亮着。
在第二轮之后,三个灯泡将[打开,关闭,打开]。
第三轮之后,三个灯泡都亮起,熄灭,熄灭。
为了解决这个问题,我们将遵循以下步骤-
这一步很简单,我们必须找到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