乙级PAT真题1012
作者:互联网
1012 数字分类 (20分)
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
A1 = 能被 5 整除的数字中所有偶数的和;
A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n 1 −n 2 +n 3 −n 4 ⋯;
A3 = 被 5 除后余 2 的数字的个数;
A4 = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
A5 = 被 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