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再例如:
輸入:10 3 6
程式應該輸出:
3資源約定:
峰值記憶體消耗 < 256m
cpu消耗 < 1000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。
所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。
注意: main函式需要返回0
注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。
注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。
提交時,注意選擇所期望的編譯器型別。
思路:不難發現被操作的次數為奇數的光源最後是點亮的,即因子(不包括1)個數為奇數的數。不過因子個數為奇數的數比較不好考慮,所以我們不妨來考慮因子個數為偶數的數。我們知道因子都是成對出現的,但由於不算1,所以「1*自身」這一對被破壞了,只有剩下了自身,那麼要達到因子個數為偶數的目的,就只能是完全平方數(4=2*2 9=3*3)了。這時問題就轉換成求給定區間內有多少完全平方數了,最後只要將該區間內所有的個數減去完全平方數的個數就可以得到答案了。1到n的完全平方數的個數為[sqrt(n)]([ ]為取整),所以[sqrt(r)]-[sqrt(l-1)]就是區間內的完全平方數個數了。
**:
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
int main()
第五屆藍橋杯(國賽) 生物晶元
問題描述 x 博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為 2 的倍數...
第五屆藍橋杯決賽C C B組 生物晶元
第一部分 題目 生物晶元 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號...
藍橋杯 2023年第五屆真題 生物晶元
時間限制 1sec 記憶體限制 128mb 提交 44 解決 6 題目描述 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源...