生物晶元 完全平方數

2021-09-26 01:16:33 字數 1080 閱讀 3863

題目描述

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
樣例輸出

2
一:被按了奇數次的燈最後是亮著的。編號為id的燈只會被編號為其約數的光源所影響,因此問題轉化為求 l到r範圍內,約數為奇數的燈編號的數量。

二:這裡有兩條重要的數學公式:

1.  完全平方數的約數個數為奇數個,例如9的約數個數為3,分別為1,3,9;

2.   1-n範圍內的完全平方數個數為 sqrt(n)取整,l 到 r的完全平方數的個數為 sqrt(r) - sqrt(l);

題意從id為2的範圍開始按,也就是不按1,少按了一次,所以問題轉化為求 l到r範圍內,約數為偶數的燈的編號的數量。

三:約數為偶數的燈的編號的數量為  範圍內燈的總數量減去完全平方數的個數。

即 (r - l + 1) - (long long)( sqrt(r)  -  sqrt(l) );

#include#includeusing namespace std;

typedef long long ll;

int main()

{ ll l,r,n;

cin>>n>>l>>r;

cout<

生物晶元(藍橋)

如題 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了n個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...

藍橋杯 生物晶元

x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...

歷屆試題 生物晶元

x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...