319 Bulb Switcher
Given n = 3.
At first, the three bulbs are [off, off, off].
After first round, the three bulbs are [on, on, on].
After second round, the three bulbs are [on, off, on].
After third round, the three bulbs are [on, off, off].
So you should return 1, because there is only one bulb is on.#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print1D(vector<int> &nums) {
for (auto i : nums) cout << i << ' ';
}
int bulbSwitch(int n) {
vector<bool> lights(n);
fill(lights.begin(), lights.end(), true);
int added = 2;
for (int k = 1; k < lights.size(); k++) {
for (int i = k; i < lights.size(); i+=added) {
// turn on every ith bulb
if (lights.at(i) == true) lights.at(i) = false;
else lights.at(i) = true;
}
added++;
}
// count lights turned on
added = 0;
for (auto i : lights)
if (i == true)
added++;
return added;
}
int main()
{
int sol = bulbSwitch(999999);
cout << sol;
}Last updated