ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

乙级PAT真题1012

2021-01-24 18:01:55  阅读:175  来源: 互联网

标签:count 除后 PAT 数字 真题 int sum 样例 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;
    }

}

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

标签:count,除后,PAT,数字,真题,int,sum,样例,1012
来源: https://blog.csdn.net/weixin_45691406/article/details/113093987

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有