Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chuyển đổi trạng thái đèn (Bulb Switcher) trong C++

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