在 JavaScript 中打开和关闭灯泡
问题
考虑以下情况-
有n个灯泡最初是关闭的。我们首先打开所有的灯泡。然后,我们每隔一个灯泡就关掉一次。在第三轮,我们每隔三个灯泡切换一次(如果关闭则打开或如果打开则关闭)。
一般来说,对于第i轮,我们切换每个i灯泡。最后在第n轮,我们只切换最后一个灯泡。
我们需要编写一个JavaScript函数,它将n作为唯一的输入,并找出n轮后有多少灯泡亮着。
例如,如果函数的输入是-
const n = 4;
那么输出应该是-
const output = 2;
输出说明:
在状态数组中,0表示关闭,而1表示开启-
因此,在第五轮之后,只有两个灯泡亮着。
示例
此代码将是-
const n = 5; const findOn = (n = 1) => { let off = 0; let on = n; while(off <= on){ let mid = Math.floor((off + on) / 2); if(mid * mid > n){ on = mid - 1; }else{ off = mid + 1; }; }; return Math.floor(on); }; console.log(findOn(n));输出结果
控制台中的输出将是-
2