第五屆藍橋杯決賽C C B組 生物晶元

2022-05-03 08:36:06 字數 1348 閱讀 6839

第一部分:題目

生物晶元

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 , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

第二部分:思路

本來我是按照原始方法寫的。從l~r對2~ n進行計算,如果因子數為奇數那麼該光源就是關閉的,因為是從2開始計算的,而1是所有數的乙個因子,所以因子數為奇數的都關閉了。這種方法結果很明顯,超時。然後看了網上的討論。得知因子數為奇數的數叫做完全平方數,完全平方數就是能夠寫成m*m的形式的數,它其中乙個特點就是因子數是奇數個。但是資料是10的15次方,如果乙個個判斷還是超時,怎麼辦呢?宣告乙個變數 i 從 l 的算術平方根開始列舉,直到 i*i 大於r。只要i*i在[l,r]範圍內,那麼說明編號為 i*i 的光源是關閉的。定義sum=r-l+1,表示區間內光源總數,每當光源是關閉的就減一。

第三部分:**

#include#include

#include

intmain()

} printf(

"%lld\n

",sum);

return0;

}

第五屆藍橋杯 c c B組8

題目描述 長100厘公尺的細長直桿子上有n只螞蟻。它們的頭有的朝左,有的朝右。每只螞蟻都只能沿著桿子向前爬,速度是1厘公尺 秒。當兩隻螞蟻碰面時,它們會同時掉頭往相反的方向爬行。這些螞蟻中,有1只螞蟻感冒了。並且在和其它螞蟻碰面時,會把感冒傳染給碰到的螞蟻。請你計算,當所有螞蟻都爬離桿子時,有多少只...

第五屆藍橋杯 c c B組6

題目描述 上小學的時候,小明經常自己發明新演算法。一次,老師出的題目是 1 4 乘以 8 5 小明居然把分子拼接在一起,分母拼接在一起,答案是 18 45 參見圖1.png 老師剛想批評他,轉念一想,這個答案湊巧也對啊,真是見鬼!對於分子 分母都是 1 9 中的一位數的情況,還有哪些算式可以這樣計算...

第五屆藍橋杯 c c B組4

史豐收速演算法的革命性貢獻是 從高位算起,進製。不需要九九表,徹底顛覆了傳統手算 速算的核心基礎是 1位數乘以多位數的乘法。其中,乘以7是最複雜的,就以它為例。因為,1 7 是個迴圈小數 0.142857.如果多位數超過 142857.就要進1 同理,2 7,3 7,6 7 也都是類似的迴圈小數,多...