題目:
x博士正在研究一種生物晶元,其邏輯密集度、容量都遠遠高於普通的半導體晶元。輸入博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即:點亮轉為關閉,或關閉轉為點亮。
這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。
博士計畫在晶元上執行如下動作:
所有編號為2的倍數的光源操作一次,也就是把 2 4 6 8 … 等序號光源開啟
所有編號為3的倍數的光源操作一次, 也就是對 3 6 9 … 等序號光源操作,注意此時6號光源又關閉了。
所有編號為4的倍數的光源操作一次。
…直到編號為 n 的倍數的光源操作一次。
x博士想知道:經過這些操作後,某個區間中的哪些光源是點亮的。
3個用空格分開的整數:n l r (l輸出樣例輸入輸出1個整數,表示經過所有操作後,[l,r] 區間中有多少個光源是點亮的。
5 2 3樣例輸出 最開始自己在vscode中寫的**,但是在**上提交 超出了限制。。但是示例是能通過的。
n,l,r=
100,50,
84light=[-
1]*(r-l+1)
#-1代表燈泡熄滅,+1代表燈泡被點亮
for a in ran+ge(
2,n1)
:for b in
range
(l,r+1)
: c=b
if c%a==0:
light[b-l]*=(
-1)print
(light.count(1)
)
然後看了題解,但是沒想明白為什麼出現當前燈泡編號的開平方根再平方不同時當前的燈泡最後就處於點亮的狀態。
math模組中的sqrt(x)**2,有的數字是會不等於自己的。比如當x==7的時候。↓↓↓
import math
print
(math.sqrt(7)
**2)
執行結果:然後就手動弄了一下示例實驗了一下,確實有這麼乙個規律
分別是5個燈泡和7個燈泡的。
0代表熄滅,1代表點亮00000
01010
01110
01100
01101
最後別點亮的燈泡的編號是2,3,5
00000000101010
0111000
0110000
0110100
0110110
0110111
最後別點亮的燈泡的編號是2,3,5,6,7
import math
n,l,r =
map(
int,
input()
.split())
count =
0for i in
range
(l,r+1)
:ifint(math.sqrt(i))**
2!= i:
count +=
1print
(count)
藍橋杯 生物晶元 Python
題目 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作...
藍橋杯 生物晶元
x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...
藍橋杯 生物晶元 python解法
題目 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作...