第八屆藍橋杯省賽C B組 K倍區間

2021-10-01 12:35:04 字數 855 閱讀 5782

給定乙個長度為 n 的數列,a1,a2,…an,如果其中一段連續的子串行 ai,ai+1,…aj 之和是 k 的倍數,我們就稱這個區間 [i,j] 是 k 倍區間。

你能求出數列中總共有多少個 k 倍區間嗎?

輸入格式

第一行包含兩個整數 n 和 k。

以下 n 行每行包含乙個整數 ai。

輸出格式

輸出乙個整數,代表 k 倍區間的數目。

資料範圍

1 ≤ n,k ≤ 100000

1 ≤ ai ≤ 100000

輸入樣例:

5 212

345

輸出樣例:

6
字首和: 如果a[i]和a[j]( i > j) mod k 是相同的,那麼就說明區間[j,i]的區間和就是數字k的倍數。

那麼還有一點: 上面的思路是i能與在它之前的且有著mod k的點j構成乙個區間,區間[j,i]的和是數字的k倍,但還有一點要注意的,如果mod k 是等於0的話,那麼就不能只加在它之前有著相同mod k 的點的個數,從開頭到它自己也是乙個答案。

時間複雜度: o(n)

#include#includeusing namespace std;

long long s[100010];

long long cnt;

mapm;

int main()

cout

return 0;

}

第八屆藍橋杯省賽C B組 K倍區間

演算法標籤 字首和 題目描述 給定乙個長度為 n 的數列,a1,a2,an,如果其中一段連續的子串行 ai,ai 1,aj 之和是 k 的倍數,我們就稱這個區間 i,j 是 k 倍區間。你能求出數列中總共有多少個 k 倍區間嗎?輸入格式 第一行包含兩個整數 n 和 k。以下 n 行每行包含乙個整數 ...

K倍區間 第八屆藍橋杯省賽C B組

題目描述 給定乙個長度為 n 的數列,a1,a2,an,如果其中一段連續的子串行 ai,ai 1,aj 之和是 k 的倍數,我們就稱這個區間 i,j 是 k 倍區間。你能求出數列中總共有多少個 k 倍區間嗎?輸入格式 第一行包含兩個整數 n 和 k。以下 n 行每行包含乙個整數 ai。輸出格式 輸出...

第八屆藍橋杯C B組 k倍區間

給定乙個長度為n的數列,a1,a2,an,如果其中一段連續的子串行ai,ai 1,aj i j 之和是k的倍數,我們就稱這個區間 i,j 是k倍區間。你能求出數列中總共有多少個k倍區間嗎?輸入 第一行包含兩個整數n和k。1 n,k 100000 以下n行每行包含乙個整數ai。1 ai 100000 ...