2019-01-24-PAT乙级-1012-数字分类
原文链接:1012 数字分类
github代码地址:HibisciDai/OJ-PAT-ACM
2019-01-24-PAT乙级-1012-数字分类
编程描述
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:
- = 能被 5 整除的数字中所有偶数的和;
- = 被 5 除后余 2 的数字的个数;
- = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
- = 被 5 除后余 4 的数字中最大数字。
辅助描述
1 2 3 4 5
| 作者: CHEN, Yue 单位: 浙江大学 时间限制: 400 ms 内存限制: 64 MB 代码长度限制: 16 KB
|
输入格式
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式
对给定的 N 个正整数,按题目要求计算 ~ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 N
。
输入样例1
1
| 13 1 2 3 4 5 6 7 8 9 10 20 16 18
|
输出样例1
输入样例2
输出样例2
算法实现
JAVA(openjdk)
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import java.util.Scanner;
public class Main { public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) { int N = sc.nextInt(); int[] inputInt = new int[N];
int temp1 = 0; int flag2 = 1, temp2 = 0, flagg2 = 0; int flag3 = 0; int flag4 = 0; float temp4 = 0; int flag5 = -1;
for (int i = 0; i < N; i++) { int temp = sc.nextInt(); inputInt[i] = temp;
if (temp % 5 == 0 && temp % 2 == 0) { temp1 += temp; } else if (temp % 5 == 1) { temp2 += flag2 * temp; flag2 *= -1; flagg2++; } else if (temp % 5 == 2) { flag3++; } else if (temp % 5 == 3) { temp4 += temp; flag4++; } else if (temp % 5 == 4) { if (temp > flag5) { flag5 = temp; } } } sc.close();
System.out.print(temp1 == 0 ? "N" : temp1); System.out.print(" "); System.out.print(flagg2 == 0 ? "N" : temp2); System.out.print(" "); System.out.print(flag3 == 0 ? "N" : flag3); System.out.print(" "); System.out.print(flag4 == 0 ? "N" : String.format("%.1f", (temp4 / flag4))); System.out.print(" "); System.out.print(flag5 == -1 ? "N" : flag5); } }
|
运行结果
1 2 3 4 5 6 7 8 9 10 11 12
| 状态 分数 题目 编译器 耗时 用户 答案正确 20 1012 Java (openjdk) 243 ms HibisciDai 测试点 结果 耗时 内存 0 答案正确 187 ms 11476 KB 1 答案正确 176 ms 11468 KB 2 答案正确 173 ms 11516 KB 3 答案正确 194 ms 11436 KB 4 答案正确 134 ms 11580 KB 5 答案正确 189 ms 11500 KB 6 答案正确 211 ms 11368 KB 7 答案正确 243 ms 15832 KB 8 答案正确 167 ms 11076 KB
|
附加
java保留小数方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat;
public class format { double f = 111231.5585;
public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.println(f1); }
public void m2() { DecimalFormat df = new DecimalFormat("#.00"); System.out.println(df.format(f)); }
public void m3() { System.out.println(String.format("%.2f", f)); }
public void m4() { NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); System.out.println(nf.format(f)); }
public static void main(String[] args) { format f = new format(); f.m1(); f.m2(); f.m3(); f.m4(); } }
|