問題描述
atm 參加了速算訓練班,經過刻苦修煉,對以 2 為底的對數算得飛快,人稱 log 大俠。
一天,log 大俠的好友 drd 有一些整數序列需要變換,log 大俠正好施展法力…
變換的規則是: 對其某個子串行的每個整數變為: [log2 x + 1] 其中 表示向下取整
就是對每個數字求以 2 為底的對數,然後取下整。
例如對序列 3 4 2 操作一次後,這個序列會變成 2 3 2。
drd 需要知道,每次這樣操作後,序列的和是多少。
輸入格式
第一行兩個正整數 n,m 。
第二行 n 個數,表示整數序列,都是正數。
接下來 m 行,每行兩個數 l,r 表示 atm 這次操作的是區間 [l, r],數列序號從 1 開始。
輸出格式
輸出 m 行,依次表示 atm 每做完乙個操作後,整個序列的和。
樣例輸入
3 35 6 4
1 22 3
1 3樣例輸出86
資料範圍
對於 30% 的資料, n, m ≤ 103
對於 100% 的資料, n, m ≤ 105
題解
位運算:
1 << x
:等價於 2x
#include
using
namespace std;
int a[
100010];
intmain()
int ans =0;
for(
int i =
1; i <= n; i ++
) ans +
= a[i];
cout << ans << endl;
}return0;
}
ps:按理說,極限情況下 n * m = 1010,居然還是過了
題解二
庫函式:
#include
#include
using
namespace std;
int a[
100010];
intmain()
while
(m --)
cout << ans << endl;
}return0;
}
第五屆藍橋杯(國賽) 排列序數
問題描述 如果用 a b c d 這 4 個字母組成乙個串,有 4 24 種,如果把它們排個序,每個串都對應乙個序號 abcd 0 abdc 1 acbd 2 acdb 3 adbc 4 adcb 5 bacd 6 badc 7 bcad 8 bcda 9 bdac 10 bdca 11 cabd ...
第五屆藍橋杯(國賽) 海盜分金幣
問題描述 有 5 個海盜,相約進行一次帆船比賽,比賽中天氣發生突變,他們被沖散了。恰巧,他們都先後經過途中的乙個無名的荒島,並且每個人都信心滿滿,覺得自己是第乙個經過該島的人。第乙個人在沙灘上發現了一堆金幣,他把金幣分成 5 等份,發現剛好少乙個金幣。他就從自己口袋拿出乙個金幣補充進去,然後把屬於自...
第五屆藍橋杯(國賽) 生物晶元
問題描述 x 博士正在研究一種生物晶元,其邏輯密集度 容量都遠遠高於普通的半導體晶元。博士在晶元中設計了 n 個微型光源,每個光源操作一次就會改變其狀態,即 點亮轉為關閉,或關閉轉為點亮。這些光源的編號從 1 到 n,開始的時候所有光源都是關閉的。博士計畫在晶元上執行如下動作 所有編號為 2 的倍數...