問題描述
x 博士正在研究一種生物晶元,其邏輯密集度、容量都遠遠高於普通的半導體晶元。
博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即:點亮轉為關閉,或關閉轉為點亮。
這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。
博士計畫在晶元上執行如下動作:
所有編號為 2 的倍數的光源操作一次,也就是把 2 4 6 8 … 等序號光源開啟
所有編號為 3 的倍數的光源操作一次, 也就是對 3 6 9 … 等序號光源操作,注意此時 6 號光源又關閉了。
所有編號為 4 的倍數的光源操作一次。
直到編號為 n 的倍數的光源操作一次。
x博士想知道:經過這些操作後,某個區間中的哪些光源是點亮的。
輸入格式
3 個用空格分開的整數:n,l,r (l < r < n < 1015)
n 表示光源數,l 表示區間的左邊界,r 表示區間的右邊界。
輸出格式
輸出 1 個整數,表示經過所有操作後,[l, r] 區間中有多少個光源是點亮的。
樣例輸入1
5 2 3
樣例輸出1
2樣例輸入2
10 3 6
樣例輸出2
3題解一
刷陣列:會超時,而且陣列也開不了這麼大
#include
using
namespace std;
bool st[
1000010];
intmain()
for(
int i =
0; i < l; i ++)if
(st[i]
) ans --;
cout << ans << endl;
return0;
}
題解二
完全平方數:
定義
:若 a = b2,則 a 就是乙個完全平方數(a,b 均為整數)
有題意可得,只有操作奇數次,該光源才會亮,即有奇數個因子,而完全平方數就擁有奇數個因子
以 9 為例
:1、3、9
但是題目排除了 1 這個因子,所以完全平方數的因子數量變為偶數,而非完全平方數的因子數量變為奇數
∴ 我們要求的是非完全平方數的數量
,即總數 - 完全平方數的數量
#include
#include
using
namespace std;
typedef
long
long ll;
intmain()
ps:吃了沒文化的虧 ? 第五屆藍橋盃國賽C B組 生物晶元
x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為2的倍數的光源操作一次,...
第五屆藍橋杯決賽C C B組 生物晶元
第一部分 題目 生物晶元 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號...
藍橋杯 2023年第五屆真題 生物晶元
時間限制 1sec 記憶體限制 128mb 提交 44 解決 6 題目描述 x博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源...