2、数字分类

题目描述
给定一系列正整数,请按要求对数字进行分类,并输出以下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”。

输入例子:
13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出例子:
30 11 2 9.7 9
java1.7:

import java.text.DecimalFormat;
/**
 * 测试用例:
 8 1 2 4 5 6 7 9 16

 对应输出应该为:

 N 11 2 N 9

 你的输出为:

 N -16 N NaN 9
 */
import java.util.Scanner;

public class Main2 {

    private static Scanner input;

    /**
     * 给定一系列正整数,请按要求对数字进行分类 并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 =
     * 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...; A3 = 被5除后余2的数字的个数; A4 =
     * 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。
     * 
     * @author fuyuw 2018年8月13日 下午9:34:19
     */
    public static void main(String[] args) {

        input = new Scanner(System.in);
        int n = input.nextInt();
        int num;
        int A1 = 0, A2 = 0, A3 = 0, A5 = 0;
        double A4 = 0.0d;

        int totalA2_1 = 0;
        int totalA2_2 = 0;

        int countA3 = 0;

        double countA4 = 0;
        double totalA4 = 0;
        int j=1;
        for (int i = 1; i <= n; i++) {
            num = input.nextInt();

            if (num % 5 == 0 && num % 2 == 0) {
                A1 += num;
            }

            if (num % 5 == 1) {
                if (j % 2 == 1) {
                    totalA2_1 += num;
                } else {
                    totalA2_2 += num;
                }
                j++;
            }

            if (num % 5 == 2) {
                countA3++;
            }

            if (num % 5 == 3) {
                totalA4 += num;
                countA4++;
            }

            if (num % 5 == 4) {
                if (num > A5) {
                    A5 = num;
                }
            }
        }
        A2=totalA2_1-totalA2_2;
        A3 = countA3;
        if(countA4 == 0){
            A4 = 0d;
        }else{
            A4 = totalA4 / countA4;
        }
        DecimalFormat df = new DecimalFormat("#.0");
        String A1_ = A1 == 0 ? "N" : String.valueOf(A1);
        String A2_ = A2 == 0 ? "N" : String.valueOf(A2);
        String A3_ = A3 == 0 ? "N" : String.valueOf(A3);
        String A4_ = A4 == 0 ? "N" : df.format(A4);
        String A5_ = A5 == 0 ? "N" : String.valueOf(A5);
        System.out.println(A1_ + " " + A2_ + " " + A3_ + " " + A4_ + " " + A5_);
    }

}

测试用例范围内最大耗时93ms,最大占用内存3892KB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值