1012 数字分类 (20分)
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
- A1 = 能被 5 整除的数字中所有偶数的和;
- A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋯;
- A3 = 被 5 除后余 2 的数字的个数;
- A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
- A5 = 被 5 除后余 4 的数字中最大数字。
输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的 N 个正整数,按题目要求计算 A1~A5 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 N
。
输入样例 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
此题条件模糊,故在此给一组测试点:
输入:1 0
输出:N N N N N
如果测试点8答案错误,原因是A2可以存在和为0的情况
代码:
#将输入数字按空格分割并转换为整型
a=list(map(int,input().split(' ')))
#输入的字符串长度
n=len(a)
#分别用来存放5类数字
A1=[]
A2=[]
A3=[]
A4=[]
A5=[]
#用来输出结果
A_output=[]
#要注意第一个数字是给与的数字个数
for i in range(1,n):
#A1
if a[i]%5==0 and a[i]%2==0:
A1.append(a[i])
#A2
elif a[i]%5==1:
A2.append(a[i])
#A3
elif a[i]%5==2:
A3.append(a[i])
#A4
elif a[i]%5==3:
A4.append(a[i])
#A5
elif a[i]%5==4:
A5.append(a[i])
#A1中的数字和
#为0时用N代替
if sum(A1):
A_output.append(str(sum(A1)))
else:
A_output.append('N')
a_2=0
for i in range(len(A2)):
if i%2==0:
a_2=a_2+A2[i]
else:
a_2=a_2-A2[i]
#A2为空时输出N
#A2可以存在和为0的情况
if A2:
A_output.append(str(a_2))
else:
A_output.append('N')
if A3:
A_output.append(str(len(A3)))
else:
A_output.append('N')
#A4要注意0不可以做分母
if len(A4)!=0:
a_4=0
for j in A4:
a_4=a_4+j
a_4=a_4/len(A4)
A_output.append('%.1f'%(a_4))
else:
A_output.append('N')
if A5:
A_output.append(str(max(A5)))
else:
A_output.append('N')
#用空格连接字符串并输出
print(' '.join(A_output))