2017藍橋杯第十題k倍區間

2021-08-17 19:32:38 字數 985 閱讀 2546

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

2  3  

4  5  

程式應該輸出:

6資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗  < 2000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

#include#include#define n 100001

//若sum[i]的字首和%k與sum[j]的字首和%k的值相同,則說明[i,j]區間出現了k的倍數

int sum[n]; // sum[i] 前i個元素的和

int num[n];

int cnt[n];

int n,k;

long long ans;

int main()

printf("%lld\n",ans+cnt[0]); //最後加cnt[0]是因為第一次出現的數恰好是k的倍數的位置到最後的區間沒加

return 0;

}

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

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 10...

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