Python實(shí)現(xiàn)和為S的連續(xù)正數(shù)序列

題目描述

小明很喜歡數(shù)學(xué),有一天他在做數(shù)學(xué)作業(yè)時(shí),要求計(jì)算出9~16的和,他馬上就寫出了正確答案是100东臀。但是他并不滿足于此,他在想究竟有多少種連續(xù)的正數(shù)序列的和為100(至少包括兩個(gè)數(shù))恢总。沒多久,他就得到另一組連續(xù)正數(shù)和為100的序列:18,19,20,21,22。現(xiàn)在把問題交給你,你能不能也很快的找出所有和為S的連續(xù)正數(shù)序列? Good Luck!

輸出描述:

輸出所有和為S的連續(xù)正數(shù)序列谢澈。序列內(nèi)按照從小至大的順序拨扶,序列間按照開始數(shù)字從小到大的順序

看見題目之后還是本能的想到用笨笨的方法去實(shí)現(xiàn)逗余,即分別從n為奇數(shù)和偶數(shù)的角度去考慮,這樣的思路比較清晰影钉,記錄一下(這里摘自Java版答案中的分析画髓,我覺得語言組織得比我自己的好多了,故摘抄一下):

鏈接:https://www.nowcoder.com/questionTerminal/c451a3fd84b64cb19485dad758a55ebe

來源:牌轿客網(wǎng)

1)由于我們要找的是和為S的連續(xù)正數(shù)序列奈虾,因此這個(gè)序列是個(gè)公差為1的等差數(shù)列,而這個(gè)序列的中間值代表了平均值的大小廉赔。假設(shè)序列長(zhǎng)度為n肉微,那么這個(gè)序列的中間值可以通過(S / n)得到,知道序列的中間值和長(zhǎng)度昂勉,也就不難求出這段序列了浪册。

? 2)滿足條件的n分兩種情況:

n為奇數(shù)時(shí),序列中間的數(shù)正好是序列的平均值岗照,所以條件為:(n & 1) == 1 && sum % n == 0村象;

n為偶數(shù)時(shí)笆环,序列中間兩個(gè)數(shù)的平均值是序列的平均值,而這個(gè)平均值的小數(shù)部分為0.5厚者,所以條件為:(sum % n) * 2 == n.

? 3)由題可知n >= 2躁劣,那么n的最大值是多少呢?我們完全可以將n從2到S全部遍歷一次库菲,但是大部分遍歷是不必要的账忘。為了讓n盡可能大,我們讓序列從1開始熙宇,


n為偶數(shù)時(shí)


n為奇數(shù)時(shí)

圖中代碼不夠簡(jiǎn)潔鳖擒,重復(fù)率高,只是為了展示清晰烫止。上述代碼在pycharm中自行調(diào)試時(shí)ok的蒋荚,但是在牛客中提交結(jié)果是算法復(fù)雜度太大馆蠕,或是超出內(nèi)存限制期升,所以只能求助于答案中國(guó)中的神解答了(唉笨),以下記錄一下:

設(shè)定兩個(gè)指針互躬,先分別指向數(shù)字1和數(shù)字2播赁,并設(shè)這兩個(gè)指針為small和big,對(duì)small和big求和吼渡,如果和大于目標(biāo)值容为,則從當(dāng)前和中刪除small值,并把small值加一诞吱,如果和小于目標(biāo)值舟奠,則把big值加一竭缝,再把新的big值加入和中房维。如果和等于目標(biāo)值,就輸出small到big的序列抬纸,同時(shí)把big加一并加入和中咙俩,繼續(xù)之前的操作。(看答案都看半天才看懂湿故,打死我也想不出這樣的答案啊TT)

也就是通過兩個(gè)指針遍歷了半個(gè)數(shù)組的全部組合可能

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末阿趁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子坛猪,更是在濱河造成了極大的恐慌脖阵,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墅茉,死亡現(xiàn)場(chǎng)離奇詭異命黔,居然都是意外死亡呜呐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門悍募,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蘑辑,“玉大人,你說我怎么就攤上這事坠宴⊙蠡辏” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵喜鼓,是天一觀的道長(zhǎng)副砍。 經(jīng)常有香客問我,道長(zhǎng)庄岖,這世上最難降的妖魔是什么址晕? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮顿锰,結(jié)果婚禮上谨垃,老公的妹妹穿的比我還像新娘。我一直安慰自己硼控,他們只是感情好刘陶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著牢撼,像睡著了一般匙隔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熏版,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天纷责,我揣著相機(jī)與錄音,去河邊找鬼撼短。 笑死再膳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的曲横。 我是一名探鬼主播喂柒,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼禾嫉!你這毒婦竟也來了灾杰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤熙参,失蹤者是張志新(化名)和其女友劉穎艳吠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體孽椰,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昭娩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年泥兰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片题禀。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鞋诗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迈嘹,到底是詐尸還是另有隱情削彬,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布秀仲,位于F島的核電站融痛,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏神僵。R本人自食惡果不足惜雁刷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望保礼。 院中可真熱鬧沛励,春花似錦、人聲如沸炮障。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胁赢。三九已至企蹭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間智末,已是汗流浹背谅摄。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留系馆,地道東北人送漠。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像它呀,于是被迫代替她去往敵國(guó)和親螺男。 傳聞我的和親對(duì)象是個(gè)殘疾皇子棒厘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容