時間限制: 1sec 記憶體限制: 128mb
題目描述
給定乙個長度為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
利用字首和的思想求解,從i到j的和可用num[j]-num[i-1]得到。若是k倍區間,則num[j]%k==num[i-1]%k。即每次都將與(num[j]-num[j-1])/k餘數相同的次數記錄,每次疊加,用乙個變數計數即可求得解。
#include
#include
#include
using namespace std;
typedef long long ll;
int num[100005];
int cnt[100005];
ll ans = 0;
int main()
printf("%lld\n",ans+cnt[0]);
return 0;
}
藍橋杯 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,...
2017藍橋杯 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 輸出乙...