乙级PAT真题1012

1012 数字分类 (20分)

给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

A1 = 能被 5 整除的数字中所有偶数的和;
A​2 ​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n ​1 ​​ −n ​2 ​​ +n ​3 ​​ −n ​4 ​​ ⋯;
A​3 ​​ = 被 5 除后余 2 的数字的个数;
A4 ​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
A​5 ​​ = 被 5 除后余 4 的数字中最大数字。

输入格式: 每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。

输出格式: 对给定的 N 个正整数,按题目要求计算 A ​1 ​​ ~A ​5 ​​
并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

若其中某一类数字不存在,则在相应位置输出 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

这道题讲的其实非常清楚了,分别实现五个功能,就好了
但是呢,我做出来了,但是最后一分,我死都找不到,是哪里错了,大佬能帮我看看吗,我真的快找吐了,就卡这最后一个一分

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class C_12 {
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int a,b,c,e=0;
        float d=0;
        int n=scanner.nextInt();
        int[] num=new int[n];
        for(int i=0;i<n;i++)
            num[i]=scanner.nextInt();
        a=A1(num);
        b=A2(num);
        c=A3(num);
        d=A4(num);
        e=A5(num);
        System.out.print((a==0?"N":a)+" "+(b==0?"N":b)+" "+(c==0?"N":c)+" "+(d==0?"N":String.format("%.1f",d))+" "+(e==0?"N":e));
    }

    public static int A1(int[] num){
        int sum=0;
        for(int i=0;i<num.length;i++)
           if(num[i]%5==0&&num[i]%2==0)
               sum+=num[i];
               return sum;
    }

    public static int A2(int[] num){
        int sum=0;
        List<Integer> list=new ArrayList<>();
        for(int i=0;i<num.length;i++)
            if(num[i]%5==1)
               list.add(num[i]);
            for(int i=0;i<list.size();i++)
                if(i%2==0)
                    sum+=list.get(i);
            else sum-=list.get(i);
            return sum;
    }

    public static int A3(int[] num){
        int count=0;
        for(int i=0;i<num.length;i++)
            if(num[i]%5==2)
                count++;
        return count;
    }

    public static float A4(int[] num){
        float sum=0;
        float count=0;
        for(int i=0;i<num.length;i++)
            if(num[i]%5==3) {
                sum += num[i];
                count++;
            }
            if(count==0)
                count=1;
        return sum/count;
    }

    public static int A5(int[] num){
        int max=0;
        for(int i=0;i<num.length;i++)
            if(num[i]%5==4)
                if(num[i]>max)
                    max=num[i];
        return max;
    }

}

大佬能帮忙看下,我是差哪个吗,一直是最后一个不行乙级PAT真题1012
最后,这里是新学编程的三岁,大佬们如果有更方便的方法,希望能在评论区告诉我,我会加以改正,谢谢!

上一篇:PAT 乙级 1012 数字分类 (20分)


下一篇:PAT 甲级 1012 The Best Rank 模拟