k倍區間 2017真題

2021-10-24 19:27:56 字數 822 閱讀 5921

題目描述

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

345

樣例輸出 

6
思路:

方法一:比較容易想到的常規做法,是利用字首和陣列來儲存整個數列的字首和,然後再利用2層迴圈把所有的區間組合方案列舉出,對其中滿足區間和為k的倍數的區間進行統計最後輸出結果即可。(資料大會超時)

方法二:

**:

#include#include#includeusing namespace std;

int sum[100010];

int num[100010];

int a[100010];

#define ll long long

int main()

printf("%lld\n",ans+num[0]);

}return 0;

}

k倍區間 藍橋真題

列舉所有區間是o n 2 這是為了遍歷所有區間 但是這個過程我們做了很多無用功 只需要遍歷一遍 這是為了遍歷每個k倍區間的右端點 而左端點可以通過之前的一些結果得出 遍歷過程中 對於每個i 都有book sum i k 這樣就知道從 1 到 i 1 有多少個區間和餘數和 1,i 相同的區間 兩者相減...

藍橋杯歷年真題 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 10000...

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