k倍區間 ,藍橋訓練

2021-10-04 13:13:13 字數 710 閱讀 6088

給定乙個長度為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)

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

樣例輸入

5 2123

45樣例輸出

解題報告:這道題如果樸素做 o n^2 想辦法優化一下,區間之和%k=(sum[r]-sum[l-1])%k=0 -> sum[r]%k==sum[l-1]%k,建立乙個cnt陣列,找到乙個sum[i]%k的值,前面存在幾個sum[i]%k的值那麼就加幾個。

#include

using

namespace std;

const

int n=

100010

;long

long s[n]

;int cnt[n]

;int

main()

long

long res=0;

for(

int i=

0;i<=n;i++

) cout

}

藍橋杯 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 10...

k倍區間 藍橋(技巧)

試題 歷屆試題 k倍區間 資源限制 時間限制 2.0s 記憶體限制 256.0mb 問題描述 給定乙個長度為n的數列,a1,a2,an,如果其中一段連續的子串行ai,ai 1,aj i j 之和是k的倍數,我們就稱這個區間 i,j 是k倍區間。你能求出數列中總共有多少個k倍區間嗎?輸入格式 第一行包...

藍橋杯 K倍區間

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