Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 전구 스위처

<시간/>

처음에 꺼진 n개의 전구가 있다고 가정합니다. 먼저 모든 전구를 켭니다. 그런 다음 매 초마다 전구를 끕니다. 세 번째 라운드에서는 세 번째 전구마다 토글합니다(꺼진 경우 켜고 켜져 있는 경우 꺼짐). 유사하게, i번째 라운드의 경우, 우리는 모든 i 전구를 토글합니다. n번째 라운드에서는 마지막 전구만 토글합니다. 그래서 우리는 n 라운드 후에 몇 개의 전구가 켜져 있는지 찾아야 합니다. 따라서 입력이 3이면 결과는 1이 됩니다. 이는 -

  • 처음에는 전구 3개가 [꺼짐, 꺼짐, 꺼짐]입니다.
  • 첫 라운드가 끝나면 전구 3개가 [켜짐, 켜짐, 켜짐]입니다.
  • 두 번째 라운드가 끝나면 전구 3개가 [켜기, 끄기, 켜기]입니다.
  • 3라운드가 끝나면 전구 3개가 [켜짐, 꺼짐, 꺼짐]입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 이 단계는 간단합니다. 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