翻轉(zhuǎn)數(shù)列python實(shí)現(xiàn),求前n項(xiàng)和,并能輸出整個(gè)數(shù)列的案例
這是刷題時(shí)遇到的一道題,題目描述:小Q定義了一種數(shù)列稱(chēng)為翻轉(zhuǎn)數(shù)列:
給定整數(shù)n和m, 滿(mǎn)足n能被2m整除。對(duì)于一串連續(xù)遞增整數(shù)數(shù)列1, 2, 3, 4..., 每隔m個(gè)符號(hào)翻轉(zhuǎn)一次, 最初符號(hào)為'-';。
例如n = 8, m = 2, 數(shù)列就是: -1, -2, +3, +4, -5, -6, +7, +8.
而n = 4, m = 1, 數(shù)列就是: -1, +2, -3, + 4.
小Q現(xiàn)在希望你能幫他算算前n項(xiàng)和為多少。
如果只需求出N項(xiàng)和的話(huà),這里可以有一個(gè)簡(jiǎn)便思路,觀察規(guī)律哈,比如n = 8, m = 2, 數(shù)列就是: -1, -2, +3, +4, -5, -6, +7, +8.時(shí),
思路1:
對(duì)于一次翻轉(zhuǎn)前后的兩個(gè)子數(shù)組, -1, -2, 和+3, +4,+3和-1的和為2,+4和-2的和為2,總和為4,同理對(duì)后面的兩個(gè)子數(shù)組求和也是4,也就是說(shuō),前后兩個(gè)不同符號(hào)的子數(shù)組的和剛好是M*M,那么這樣的數(shù)組有多少呢,有N/2M次,所以和為M*N/2
思路2:
對(duì)于相隔m個(gè)的兩個(gè)數(shù)字?jǐn)?shù)字的正好為M,這樣的數(shù)字對(duì)有N/2個(gè),所以和就為M*N/2啦~~~~是不是so easy呀
好了,python實(shí)現(xiàn)如下,這個(gè)是把數(shù)列輸出,然后再求和,另外思路2在里面有體現(xiàn)哦
def isInput(m,n): c=n/m d=c%2 if d==0: return True else: return False def s(m,n): t=int(n/m) an=[] ai=0 for turntime in range(1,t+1):#turntime是翻轉(zhuǎn)次數(shù) for sublen in range(0,m):#sublen是相同符號(hào)的子序列長(zhǎng)度 ai=ai+1 tt=turntime%2 if tt==0: an.append(ai) else: ci=ai*(-1) an.append(ci) print(an) print(sum(an)) test=[] for a in an: if a<0: test.append(a) x=len(test) print(m*x)#這里可以直接計(jì)算出結(jié)果 m=int(input("請(qǐng)輸入M:")) n=int(input('請(qǐng)輸入N:')) if isInput(m,n)==False: print('輸入不合法') else: s(m,n)
補(bǔ)充知識(shí):Python Fibonacci-無(wú)窮數(shù)列 求第n項(xiàng)及前n項(xiàng)和
Fibonacci數(shù)列,又稱(chēng)無(wú)窮列表,前n項(xiàng)和為:1,1,2,3,5,8,13,21,34,55…
他可以遞歸地定義為:
這是一個(gè)遞歸關(guān)系,當(dāng)n大于1時(shí),這個(gè)數(shù)列的第n項(xiàng)和是前兩項(xiàng)之和。利用遞歸算法可以很簡(jiǎn)單地解出其解以及前n項(xiàng)和。
# 分段函數(shù) F(n)= {1 n=0; 1 n=1; F(n-1)+F(-2) n>1} def backValue(n): if n<=1: return 1 return backValue(n-1)+backValue(n-2) n = int(input("輸入一個(gè)大于 0 的正整數(shù):")) value = [i for i in range(n)] Fbc_list = [] for i in value: s = backValue(i) Fbc_list.append(s) print("第%s的數(shù)為:"%n,Fbc_list[-1],"\n無(wú)窮列表為:",Fbc_list,"\n前%s項(xiàng)和為:"%n,sum(Fbc_list))
以上這篇翻轉(zhuǎn)數(shù)列python實(shí)現(xiàn),求前n項(xiàng)和,并能輸出整個(gè)數(shù)列的案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于python實(shí)現(xiàn)銀行管理系統(tǒng)
這篇文章主要介紹了基于python實(shí)現(xiàn)銀行管理系統(tǒng),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python項(xiàng)目制作的小伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單成績(jī)錄入系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09python3中os.path模塊下常用的用法總結(jié)【推薦】
這篇文章主要介紹了python3中os.path模塊下常用的用法總結(jié) ,需要的朋友可以參考下2018-09-09python unichr函數(shù)知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于python unichr函數(shù)的知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2020-12-12Python實(shí)現(xiàn)的各種常見(jiàn)分布算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的各種常見(jiàn)分布算法,結(jié)合實(shí)例形式總結(jié)分析了Python常見(jiàn)的各種分布算法相關(guān)實(shí)現(xiàn)技巧,包括二項(xiàng)分布、離散分布、泊松分布、正態(tài)分布、指數(shù)分布等算法實(shí)現(xiàn)方法,需要的朋友可以參考下2018-12-12Windows上配置Emacs來(lái)開(kāi)發(fā)Python及用Python擴(kuò)展Emacs
這篇文章主要介紹了Windows上配置Emacs來(lái)開(kāi)發(fā)Python及用Python擴(kuò)展Emacs的方法,Emacs與Vim并稱(chēng)為開(kāi)發(fā)者手中最強(qiáng)大的兩款文本編輯器,需要的朋友可以參考下2015-11-11python實(shí)現(xiàn)鍵盤(pán)控制鼠標(biāo)移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)鍵盤(pán)控制鼠標(biāo)移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Python使用logging實(shí)現(xiàn)多進(jìn)程安全的日志模塊
這篇文章主要為大家詳細(xì)介紹了Python如何使用標(biāo)準(zhǔn)庫(kù)logging實(shí)現(xiàn)多進(jìn)程安全的日志模塊,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2024-01-01淺談Python中re.match()和re.search()的使用及區(qū)別
這篇文章主要介紹了淺談Python中re.match()和re.search()的使用及區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04