給定一系列正整數,請按要求對數字進行分類,並輸出如下 5 個數字:html
A1 = 被 5 整除的數字中全部偶數的和;app
A2 = 被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算n1-n2+n3-n4...;
函數
A3 = 被 5 除後餘 2 的數字的個數;測試
A4 = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;spa
A5 = 被 5 除後餘 4 的數字中最大數字。code
每一個輸入包含 1 個測試用例。每一個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過1000的待分類的正整數。數字間以空格分隔。htm
對給定的 N 個正整數,按題目要求計算A1~A5並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。若其中某一類數字不存在,則在相應位置輸出 N。blog
13 1 2 3 4 5 6 7 8 9 10 20 16 18
30 11 2 9.7 9
8 1 2 4 5 6 7 9 16
N 11 2 N 9
a=list(map(int,input().split()[1:])) a1=0 a2=0 k=1 a3=0 sum=0 count=0 b=[] l=0 age,m=0,0 for i in range(len(a)): if a[i]%5==0 and a[i]%2==0: a1+=a[i] elif a[i]%5==1: a2+=a[i]*k k=-k l+=1 elif a[i]%5==2: a3+=1 elif a[i]%5==3: sum+=a[i] count+=1 else: if a[i]%5: b.append(a[i]) if count: age=round(sum/count,1) if b: m=max(b) def printf(t): if t: print(t,end = " ") else: print('N',end = " ") printf(a1) if l: print(a2,end = " ") else: print('N',end = " ") printf(a3) printf(age) if m: print(m) else: print('N')
這個題目卻是也不難,細心按照要求分好類就OK了,不過,若是A4這類數字若是沒有,那直接用除法計算平均值就會出現除零異常,這個測試點就通不過,因此,作除法以前,須要先判斷一下有沒有這類數字;還有若是用Python的max()函數去求一個序列中的最大值,那麼這個序列不能爲空,因此,也須要作一個判斷,其餘就沒什麼了。ip
還有一個小插曲,我是在牛客網刷題的,而後我發現他們的一個測試點好像有問題:input
根據題目的要求,若是某一類數字不存在,則相應輸出"N",那對於A2這類數字,就應該它沒有,才輸出"N",有可是他的和爲0(有這麼一種狀況,由於題目沒規定不能輸入重複的正整數),就應該輸出0,好比這樣的簡單測試樣例:
5 1 1 2 2 2
按照題目要求,應該輸出:N 0 3 N N 纔是正確的,輸出:N N 3 N N 是錯誤的,可是我試了一下,好像輸出這兩種狀況均可以AC
由於本身是比較菜的,因此懼怕本身分析錯了,我又去PTA平臺試了一下,沒想到,我想的居然是對的,而後我已經向牛客網提交了對這道題目測試點的糾錯,挺開心的