演算法標籤:字首和
題目描述
給定乙個長度為 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
c++ **
o(n^3) 列舉
for(int r = 0;r<=n;r++)
for(int l = 0;l<=r;l++)
字首和 o(n^2)
for(int r = 0;r<=n;r++)
for(int l = 0;l<=r;l++)
if((st[r] - st[l-1]) %k == 0)//相當於計算多少個st[r%k] == st[l-1%k],==特定值x
ans++;
o(n)
#include
using
namespace std;
typedef
long
long ll;
const
int n=
1e5+10;
ll cnt[n]
,s[n]
;int n,k;
ll ans;
intmain()
cout<;//加上餘數為零的情況
return0;
}
第八屆藍橋杯省賽C B組 K倍區間
給定乙個長度為 n 的數列,a1,a2,an,如果其中一段連續的子串行 ai,ai 1,aj 之和是 k 的倍數,我們就稱這個區間 i,j 是 k 倍區間。你能求出數列中總共有多少個 k 倍區間嗎?輸入格式 第一行包含兩個整數 n 和 k。以下 n 行每行包含乙個整數 ai。輸出格式 輸出乙個整數,...
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 ...