最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【藍(lán)橋杯學(xué)習(xí)記錄】K倍區(qū)間

2022-03-26 19:11 作者:長(zhǎng)舟泛歌  | 我要投稿

一、題目

給定一個(gè)長(zhǎng)度為N的數(shù)列,A1, A2, ...... AN ,如果其中一段連續(xù)的子序列Ai,Ai+1, ...... Aj( i≤j ) 之和是K的倍數(shù),我們就稱(chēng)這個(gè)區(qū)間 [i, j][i,j] 是 K 倍區(qū)間。你能求出數(shù)列中總共有多少個(gè) K 倍區(qū)間嗎?
第一行包含兩個(gè)整數(shù) N 和 K
以下 N 行每行包含一個(gè)整數(shù) Ai
輸出一個(gè)整數(shù),代表 K 倍區(qū)間的數(shù)目。

二、數(shù)學(xué)知識(shí)

(a-b)%K==0等價(jià)于a&K==b%K

三、解題思路

本題很容易想到暴力的做法,就是用一個(gè)三層循環(huán),但是這樣會(huì)超時(shí)。于是可以用前綴和,即sum[i]=A[1]+A[2]+·······A[i]。這樣每一個(gè)區(qū)間[i,j]的和就可以表示為sum[j]-sum[i]。由上面數(shù)學(xué)知識(shí)講到的等價(jià)式可知,我們想得到區(qū)間和對(duì)K取余==0,就是任意兩個(gè)前綴和對(duì)K取余得到的余數(shù)相等所以我們可以計(jì)算一下所有前綴和對(duì)K取余的余數(shù)的個(gè)數(shù),并且用組合數(shù)公式來(lái)得到一共有幾個(gè)組合,即有幾個(gè)K倍區(qū)間。

四、完整代碼

五、出現(xiàn)的問(wèn)題

本來(lái)用暴力方法就已經(jīng)超時(shí)了,我在改成前綴和時(shí)又把求余數(shù)新加了一個(gè)循環(huán),導(dǎo)致又超時(shí)了,挺笨的。還有就是測(cè)試數(shù)據(jù)有100000個(gè),而我開(kāi)始把數(shù)組S設(shè)成了[100000],但是我又棄用了S[0]導(dǎo)致數(shù)組越界了,另外答案很大,需要用long long類(lèi)型

六、參考資料

https://www.jianshu.com/p/3ed28f2bbcad

https://www.bbsmax.com/A/6pdD24EKJw/

【藍(lán)橋杯學(xué)習(xí)記錄】K倍區(qū)間的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
天全县| 鲁甸县| 商南县| 长岛县| 三门峡市| 鲁甸县| 屏南县| 象山县| 海伦市| 交口县| 顺昌县| 霍林郭勒市| 张掖市| 河源市| 荆门市| 塔河县| 奎屯市| 峨眉山市| 枣庄市| 五寨县| 武川县| 翁牛特旗| 汾阳市| 金乡县| 阳泉市| 托克托县| 和平区| 嘉义县| 星子县| 敦煌市| 繁昌县| 罗甸县| 桐庐县| 彭山县| 平顺县| 滨海县| 岳阳市| 安康市| 阿鲁科尔沁旗| 临城县| 灵川县|