[蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯][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)
輸出
輸出一個整數,代表K倍區間的數目。
樣例輸入
5 2
1
2
3
4
5
樣例輸出
6
思路:暴力的方法很容易想,但是一定會超時。我們求出前綴和來,如果[l,r]是所謂的k倍區間,那么(sum[r]-sum[l-1])%k0,轉換一下也就是(sum[r]%k)(sum[l-1])%k,也就是我們在遍歷的時候計算前綴和模k的數量,然后再加上就可以了。需要注意的是,我們沒有計算l==1的情況,最后需要加上,否則結果會出錯。
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的[蓝桥杯][2017年第八届真题]k倍区间(数学+思维)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipad pro二代和三代区别(iPad
- 下一篇: 基于开源鸿蒙 OpenHarmony,汇