2023年藍橋杯B組C C 第10題

2021-07-31 15:38:42 字數 1136 閱讀 3470

k倍區間

有n個數的數列

a1,a2,...,an

,定義s(i, j) = ai+ai+1+

……+aj(i<=j)

。如果s(i, j)

能被正整數

k整除,那麼稱

s(i, j)為k

倍區間。

測試資料共兩行。第一行為兩個正整數n和

k,第二行為

n個不同的正整數。

輸入樣例1:

5 21 2 3 4 5

輸入樣例2:

5 31 2 3 4 5

輸出樣例1:

輸出樣例2:

樣例1解釋:這

6個區間分別為

[2,2], [4,4], [1,3], [3, 5], [1, 4], [2, 5]

題解:以sum(i)表示

a1+a2+

……+ai

,那麼s(i, j) = sum(j) - sum(i-1)。k

倍區間滿足

s(i, j) % k == 0

,則[sum(j) - sum(i-1)] % k == 0

,變換為

sum(j) % k == sum(i-1) % k

。可以邊讀入

ai邊計算

sum(i)

,同時做模

k運算。然後,對於

sum(r)

,假設有x個

sum(l)(l的值與

sum(r)

相同,那麼就有x個

k倍區間,累加到答案中。

#include#include#define maxn 100001

int cnt[maxn], a[maxn];

__int64 sum;

int main()

memset(cnt, 0, sizeof(cnt));

a[0] = 0;

for(i = 1; i <= n; i++)

sum = 0;

cnt[0] = 1;

for(i = 1; i <= n; i++)

printf("%i64d\n", sum);

return 0;

}

2023年藍橋杯B組C C 決賽題目

從昏迷中醒來,小明發現自己被關在x星球的廢礦車裡。礦車停在平直的廢棄的軌道上。他的面前是兩個按鈕,分別寫著 f 和 b 小明突然記起來,這兩個按鈕可以控制礦車在軌道上前進和後退。按f,會前進97公尺。按b會後退127公尺。透過昏暗的燈光,小明看到自己前方1公尺遠正好有個監控探頭。他必須設法使得礦車正...

2023年藍橋杯B組C C 決賽題解

三重迴圈 列舉a,b,c的值,如果滿足兩個條件 3個a 7個b 1個c 15 4個a 10個b 1個c 420 就是一組合法的解。輸出a b c就是答案 一開始以為很難,看了題解 都是用dfs暴力搜出來的 國賽第二題永遠是用dfs解決。下面部落格dfs的很完美啊!參考部落格 思路 dfs x,y 正...

2023年藍橋杯C C 組B組第二題

include includeint a 30 int fun1 int num for int j last printf n if getasynckeystate 48 sum if j 29 if go 0 if k 27 a k 0 else if go 1 else if go 2 把剩...