给定一系列正整数,请按要求对数字进行分类,并输出如下 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平台试了一下,没想到,我想的居然是对的,而后我已经向牛客网提交了对这道题目测试点的纠错,挺开心的