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