13505
13505
<ul class="md-nav__list">
13506
13506
13507
13507
<li class="md-nav__item">
13508
- <a href="#solution-1" class="md-nav__link">
13508
+ <a href="#solution-1-mathematics " class="md-nav__link">
13509
13509
<span class="md-ellipsis">
13510
- Solution 1
13510
+ Solution 1: Mathematics
13511
13511
</span>
13512
13512
</a>
13513
13513
@@ -75463,15 +75463,22 @@ <h2 id="description">Description</h2>
75463
75463
</ul>
75464
75464
75465
75465
<h2 id="solutions">Solutions</h2>
75466
- <h3 id="solution-1">Solution 1</h3>
75467
- <div class="tabbed-set tabbed-alternate" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label></div>
75466
+ <h3 id="solution-1-mathematics">Solution 1: Mathematics</h3>
75467
+ <p>We can number the $n$ bulbs as $1, 2, 3, \cdots, n$. For the $i$-th bulb, it will be operated in the $d$-th round if and only if $d$ is a factor of $i$.</p>
75468
+ <p>For a number $i$, the number of its factors is finite. If the number of factors is odd, the final state is on; otherwise, it is off.</p>
75469
+ <p>Therefore, we only need to find the number of numbers from $1$ to $n$ with an odd number of factors.</p>
75470
+ <p>For a number $i$, if it has a factor $d$, then it must have a factor $i/d$. Therefore, numbers with an odd number of factors must be perfect squares.</p>
75471
+ <p>For example, the factors of the number $12$ are $1, 2, 3, 4, 6, 12$, and the number of factors is $6$, which is even. For the perfect square number $16$, the factors are $1, 2, 4, 8, 16$, and the number of factors is $5$, which is odd.</p>
75472
+ <p>Therefore, we only need to find how many perfect squares there are from $1$ to $n$, which is $\lfloor \sqrt{n} \rfloor$.</p>
75473
+ <p>The time complexity is $O(1)$, and the space complexity is $O(1)$.</p>
75474
+ <div class="tabbed-set tabbed-alternate" data-tabs="1:5"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python3</label><label for="__tabbed_1_2">Java</label><label for="__tabbed_1_3">C++</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">TypeScript</label></div>
75468
75475
<div class="tabbed-content">
75469
75476
<div class="tabbed-block">
75470
75477
<div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
75471
75478
<span class="normal">2</span>
75472
75479
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span> <span class="nc">Solution</span><span class="p">:</span>
75473
75480
<span class="k">def</span> <span class="nf">bulbSwitch</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span>
75474
- <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">n </span> <span class="o">**</span> <span class=" p">(</span><span class="mi">1</span> <span class="o">/</span> <span class="mi">2 </span><span class="p">))</span>
75481
+ <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">sqrt </span><span class="p">(</span><span class="n">n </span><span class="p">))</span>
75475
75482
</code></pre></div></td></tr></table></div>
75476
75483
</div>
75477
75484
<div class="tabbed-block">
@@ -75486,6 +75493,36 @@ <h3 id="solution-1">Solution 1</h3>
75486
75493
<span class="p">}</span>
75487
75494
</code></pre></div></td></tr></table></div>
75488
75495
</div>
75496
+ <div class="tabbed-block">
75497
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
75498
+ <span class="normal">2</span>
75499
+ <span class="normal">3</span>
75500
+ <span class="normal">4</span>
75501
+ <span class="normal">5</span>
75502
+ <span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="k">class</span><span class="w"> </span><span class="nc">Solution</span><span class="w"> </span><span class="p">{</span>
75503
+ <span class="k">public</span><span class="o">:</span>
75504
+ <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">bulbSwitch</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
75505
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="n">sqrt</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
75506
+ <span class="w"> </span><span class="p">}</span>
75507
+ <span class="p">};</span>
75508
+ </code></pre></div></td></tr></table></div>
75509
+ </div>
75510
+ <div class="tabbed-block">
75511
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
75512
+ <span class="normal">2</span>
75513
+ <span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">func</span><span class="w"> </span><span class="nx">bulbSwitch</span><span class="p">(</span><span class="nx">n</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
75514
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">int</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">Sqrt</span><span class="p">(</span><span class="nb">float64</span><span class="p">(</span><span class="nx">n</span><span class="p">)))</span>
75515
+ <span class="p">}</span>
75516
+ </code></pre></div></td></tr></table></div>
75517
+ </div>
75518
+ <div class="tabbed-block">
75519
+ <div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal">1</span>
75520
+ <span class="normal">2</span>
75521
+ <span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">bulbSwitch</span><span class="p">(</span><span class="nx">n</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
75522
+ <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">floor</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">n</span><span class="p">));</span>
75523
+ <span class="p">}</span>
75524
+ </code></pre></div></td></tr></table></div>
75525
+ </div>
75489
75526
</div>
75490
75527
</div>
75491
75528
<!-- end -->
0 commit comments