Có n đèn initially tắt. Vòng 1: bật tất cả. Vòng 2: tắt đèn chẵn. Vòng i: đảo đèn bội của i. Vòng n: đảo đèn cuối. Tìm số đèn bật sau n vòng.
Ví dụ: n=3 → 1 đèn bật.
Quan sát toán học
Đèn k bị đảo số lần = số ước của k. Đèn bật ↔ số ước lẻ ↔ k là số chính phương. Số đèn bật = floor(sqrt(n)).
Mã nguồn C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int bulbSwitch(int n) { return sqrt(n); }
};
int main() {
Solution ob;
cout << ob.bulbSwitch(3); // 1
return 0;
}
Đầu vào / Đầu ra
Input: 3
Output: 1