PAT 數字分類 Python版

給定一系列正整數,請按要求對數字進行分類,並輸出如下 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

輸入樣例 1:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

輸出樣例 1:

30 11 2 9.7 9

輸入樣例 2:

8 1 2 4 5 6 7 9 16

輸出樣例 2:

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平臺試了一下,沒想到,我想的居然是對的,而後我已經向牛客網提交了對這道題目測試點的糾錯,挺開心的

相關文章
相關標籤/搜索