A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. 题目:https://www.patest.cn/contests/pat-b-practise/1012
  2. 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
  3. A1 = 能被5整除的数字中所有偶数的和;
  4. A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
  5. A3 = 被5除后余2的数字的个数;
  6. A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
  7. A5 = 被5除后余4的数字中最大数字。

  8. 输入格式:

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

  10. 输出格式:

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

  12. 若其中某一类数字不存在,则在相应位置输出“N”。
  13. 输入样例1:

  14. 13 1 2 3 4 5 6 7 8 9 10 20 16 18

  15. 输出样例1:

  16. 30 11 2 9.7 9

  17. 输入样例2:

  18. 8 1 2 4 5 6 7 9 16

  19. 输出样例2:

  20. N 11 2 N 9

复制代码
  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. public class 数字分类 {

  4.         private static Scanner sc;

  5.         public static void main(String[] args) {

  6.                 sc = new Scanner(System.in);

  7.                 int[] count = new int[5];
  8.                 int[] flag = new int[5];
  9.                 int flag1 = 1;
  10.                 Arrays.fill(count, 0);
  11.                 Arrays.fill(flag, 0);

  12.                 int n = sc.nextInt();
  13.                 int[] num = new int[n];

  14.                 for (int i = 0; i < n; i++) {
  15.                         num[i] = sc.nextInt();
  16.                 }

  17.                 for (int i = 0; i < n; i++) {

  18.                         int t = num[i];

  19.                         switch (num[i] % 5) {
  20.                         case 0:
  21.                                 if (t % 2 == 0) {
  22.                                         flag[0]++;
  23.                                         count[0] += t;
  24.                                 }
  25.                                 break;
  26.                         case 1:
  27.                                 count[1] += t * flag1;
  28.                                 flag1 = flag1 * (-1);
  29.                                 flag[1]++;
  30.                                 break;
  31.                         case 2:
  32.                                 count[2]++;
  33.                                 flag[2]++;
  34.                                 break;
  35.                         case 3:
  36.                                 count[3] += t;
  37.                                 flag[3]++;
  38.                                 break;
  39.                         case 4:
  40.                                 flag[4]++;
  41.                                 if (t > count[4]) {
  42.                                         count[4] = t;
  43.                                 }
  44.                                 break;
  45.                         }
  46.                 }

  47.                 if (flag[0] == 0)

  48.                 {
  49.                         System.out.print("N");
  50.                 } else

  51.                 {
  52.                         System.out.print(count[0]);
  53.                 }

  54.                 for (

  55.                 int i = 1; i < 5; i++)

  56.                 {
  57.                         if (i == 3) {
  58.                                 if (flag[3] == 0) {
  59.                                         System.out.print(" N");
  60.                                 } else {
  61.                                         long avg = Math.round(count[3] * 1.0 / flag[3] * 10);
  62.                                         System.out.print(" " + avg / 10.0);
  63.                                 }
  64.                         } else {
  65.                                 if (flag[4] == 0) {
  66.                                         System.out.print(" N");
  67.                                 } else {
  68.                                         System.out.print(" " + count[i]);
  69.                                 }
  70.                         }
  71.                 }

  72.         }

  73. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马