藍橋 k倍區間 字首和

2021-10-23 00:00:38 字數 920 閱讀 7793

題目描述

給定乙個長度為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樣例輸出

6用sum[i]表示[1,i]的區間和,那麼對於乙個區間[l,r], 可以用sum[r]-sum[l-1]來表示。

要求區間和整除k的,需要(sum[r]-sum[l-1])%k==0 —》sum[r]%k=sum[l-1]%k.

也就是當處理到i時,要看前面有多少個%k相同的,也就是到當前位置為結尾的區間和為k整數倍的個數。

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

int a[

100005];

int cnt[

100005];

int sum[

100005];

intmain()

cout<;//單獨的乙個k整數倍也可以

return0;

}

藍橋 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 輸出乙...

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

藍橋杯 k倍區間(字首和)

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