當(dāng)前位置:
首頁 >
[蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
發(fā)布時間:2023/12/15
48
豆豆
生活随笔
收集整理的這篇文章主要介紹了
[蓝桥杯][2017年第八届真题]k倍区间(数学+思维)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
給定一個長度為N的數(shù)列,A1, A2, … AN,如果其中一段連續(xù)的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍數(shù),我們就稱這個區(qū)間[i, j]是K倍區(qū)間。
你能求出數(shù)列中總共有多少個K倍區(qū)間嗎?
輸入
第一行包含兩個整數(shù)N和K。(1 <= N, K <= 100000)
以下N行每行包含一個整數(shù)Ai。(1 <= Ai <= 100000)
輸出
輸出一個整數(shù),代表K倍區(qū)間的數(shù)目。
樣例輸入
5 2
1
2
3
4
5
樣例輸出
6
思路:暴力的方法很容易想,但是一定會超時。我們求出前綴和來,如果[l,r]是所謂的k倍區(qū)間,那么(sum[r]-sum[l-1])%k0,轉(zhuǎn)換一下也就是(sum[r]%k)(sum[l-1])%k,也就是我們在遍歷的時候計算前綴和模k的數(shù)量,然后再加上就可以了。需要注意的是,我們沒有計算l==1的情況,最后需要加上,否則結(jié)果會出錯。
代碼如下:
努力加油a啊,(o)/~
總結(jié)
以上是生活随笔為你收集整理的[蓝桥杯][2017年第八届真题]k倍区间(数学+思维)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipad pro二代和三代区别(iPad
- 下一篇: O(n)算法得到数组中第k大的数字