[蓝桥杯][2014年第五届真题]生物芯片(数论)
題目描述
X博士正在研究一種生物芯片,其邏輯密集度、容量都遠遠高于普通的半導體芯片。
博士在芯片中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即:點亮轉為關閉,或關閉轉為點亮。
這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。
博士計劃在芯片上執行如下動作:
所有編號為2的倍數的光源操作一次,也就是把 2 4 6 8 … 等序號光源打開
所有編號為3的倍數的光源操作一次, 也就是對 3 6 9 … 等序號光源操作,注意此時6號光源又關閉了。
所有編號為4的倍數的光源操作一次。
直到編號為 n 的倍數的光源操作一次。
X博士想知道:經過這些操作后,某個區間中的哪些光源是點亮的。
輸入
3個用空格分開的整數:N L R (L<R<N<10^15) N表示光源數,L表示區間的左邊界,R表示區間的右邊界。
輸出
輸出1個整數,表示經過所有操作后,[L,R] 區間中有多少個光源是點亮的。
樣例輸入
5 2 3
樣例輸出
2
思路:我們可以想到,每一個位置,如果它的因子的個數是偶數的話,那么它就是關著的。否則就是開著的。數據量太大我們肯定不能遍歷,那么就要找規律了。對于一個數x來說,如果y是它的一個因子,那么x/y也必然是它的一個因子。因此因子的個數是成對出現的。但是一種情況例外,那就是y==x/y的時候,也就是x是平方數的時候。x是平方數的時候,因子個數是奇數,但是1除外,那么它會產生貢獻的因子個數就是偶數,也就是它最終還是關著的;非平方數正好相反。因此我們求出[l,r]中的平方數個數,減去就可以了。
代碼如下:
努力加油a啊,(o)/~
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的[蓝桥杯][2014年第五届真题]生物芯片(数论)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 64g优盘实际多少容量
- 下一篇: css实现缺角的几种方法