• PAT 数字分类


    给定一系列正整数,请按要求对数字进行分类,并输出以下 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
    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()函数去求一个序列中的最大值,那么这个序列不能为空,所以,也需要做一个判断,其他就没什么了。

    还有一个小插曲,我是在牛客网刷题的,然后我发现他们的一个测试点好像有问题:

    根据题目的要求,如果某一类数字不存在,则相应输出"N",那对于A2这类数字,就应该它没有,才输出"N",有但是他的和为0(有这么一种情况,因为题目没规定不能输入重复的正整数),就应该输出0,比如这样的简单测试样例:

    5 1 1 2 2 2

    按照题目要求,应该输出:N 0 3 N N 才是正确的,输出:N N 3 N N 是错误的,但是我试了一下,好像输出这两种情况都可以AC

    因为自己是比较菜的,所以害怕自己分析错了,我又去PTA平台试了一下,没想到,我想的竟然是对的,然后我已经向牛客网提交了对这道题目测试点的纠错,挺开心的

  • 相关阅读:
    【MyLocations】标记位置App开发体会
    iOS开发-Core Location和Map Kit
    iOS开发-轻点、触摸和手势
    iOS开发-GCD和后台处理
    iOS开发-block使用与多线程
    iOS开发-数据持久化
    iOS开发-为程序添加应用设置
    对iOS中MVC的理解
    docker
    linux shell
  • 原文地址:https://www.cnblogs.com/andrew3/p/12623217.html
Copyright © 2020-2023  润新知