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

2021-10-03 18:49:17 字數 984 閱讀 7741

演算法標籤:字首和

題目描述

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