PTA乙级题目1012(python3 + java)
题目信息:
给定一系列正整数,请按要求对数字进行分类,并输出以下 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。
python3
x = list(map(int, input().strip().split()))
list1 = x[1:]
a1 = 0
a2 = 0
a3 = 0
a4 = 0
a5 = 0
count = 0
average_he = 0
list5 = [0]
count1 = 1
count3 = 0
# 计算结果
for i in range(len(list1)):
b = list1[i] % 5
if b == 0 and list1[i] % 2 == 0:
a1 += list1[i]
elif b == 1 and count1 % 2 == 1:
count3 = 1
count1 += 1
a2 += list1[i]
elif b == 1 and count1 % 2 == 0:
count3 = 1
count1 += 1
a2 -= list1[i]
elif b == 2:
a3 += 1
elif b == 3:
average_he += list1[i]
count += 1
elif b == 4:
list5.append(list1[i])
# 判断是否无结果
if a1 == 0:
a1 = "N"
if a2 == 0 and count3 == 0:
a2 = "N"
if a3 == 0:
a3 = "N"
if count == 0:
a4 = "N"
else:
a4 = format(float(average_he) / float(count), ".1f")
if max(list5) == 0:
a5 = "N"
else:
a5 = max(list5)
print(str(a1) + " " + str(a2) + " " + str(a3) + " " + str(a4) + " " + str(a5))
java(时间有点长,同python3写法)
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner ll = new Scanner(System.in);
int a = ll.nextInt();
int[] aa1 = {0, 0, 0, 0, 0};
int count = 0;
float average = 0;
int a1 = 0, a2 = 0, a3 = 0;
float a4 = 0;
int[] aa = new int[a];
for(int i = 0; i < a; i++)
{
aa[i] = ll.nextInt();
}
int biaozhi = 0;
int biaozhi2 = 0;
for(int i = 0; i < aa.length; i++)
{
int b = aa[i] % 5;
switch(b)
{
case 0:
{
if(aa[i] % 2 == 0)
{
aa1[0] += aa[i];
}
}break;
case 1:
{
if(biaozhi % 2 == 0)
{
biaozhi++;
aa1[1] += aa[i];
}
else if(biaozhi % 2 == 1)
{
biaozhi++;
aa1[1] = aa1[1] - aa[i];
}
}break;
case 2:
{
aa1[2]++;
}break;
case 3:
{
count++;
average += (float)aa[i];
}break;
case 4:
{
if(biaozhi2 == 0)
{
aa1[4] = aa[i];
biaozhi2 = 1;
}
else if(biaozhi2 == 1)
{
if(aa1[4] < aa[i])
{
aa1[4] = aa[i];
}
}
}break;
}
}
result(aa1[0]);
if(biaozhi == 0)
{
System.out.printf("N ");
}
else
{
System.out.printf(String.valueOf(aa1[1]) + " ");
}
result(aa1[2]);
if (count != 0)
{
System.out.printf(String.valueOf(String.format("%.1f", average / count)) + " ");
} else
{
System.out.printf("N ");
}
if(aa1[4] == 0)
{
System.out.printf("N");
}
else
{
System.out.printf(String.valueOf(aa1[4]));
}
}
public static void result(int a)
{
if(a == 0)
{
System.out.printf("N ");
}
else if(a != 0)
{
System.out.printf(String.valueOf(a) + " ");
}
}
}