【牛客网OJ题】数字fenlei

 问题描述:

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


示例1


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


输出
30 11 2 9.7 9

分析:

这个解题步骤就按题目要求来求就行了。

A1:先找到能被5整除的,在判断他是否能被2整除,能整除就说明他是偶数,反之就不符合要求。

A2:这个地方牵扯到加减交替运行的,所以需要用一个临时变量tmp,首先给他赋初值为1(因为运算中第一个是正号,即乘的是1),当把 tmp*a 的值加到A2中后,tmp = (-1) * tmp(这一块就实现了第二个为负数,等到第三个数的时候,tmp又为1,故实现了加减交替)。

A3:如果满足除5余2,那么A3就加一,遍历完就行了。

A4:首先要记录下满足除5余3的所有数的和存在A4中以及一共有多少个数存在n中,最后输出 A4/n。

        注意:1. 定义A4时用 float 定义

                   2.输出时要求只有一位小数,可以用%.1f 来满足要求。(如果这个条件没满足,测试用例不会完全通过)

A5:首先给A5赋初始值0,如果有满足除5余4并且同时满足比A5值大的数,就把这个数赋给A5。

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int N = in.nextInt();
            int [] s = new int[N];
            for(int i =0;i<N ;i++){
                s[i] = in.nextInt();
            }

            int a1 = 0;
            int a2 = 0;
            int a3 = 0;
            double a4 = 0;
            int a5 = 0;
            boolean flag = false;//a2
            int tmp = 1;
            int n = 0;//a4
            for(int i = 0;i<s.length;i++){
                int a = s[i];
                //a1
                if( a % 5 == 0 && a % 2 ==0 ){
                    a1 += a;
                }

                //a2
                if(a % 5 == 1 ){
                    flag = true;
                    a2 += tmp * a;
                    tmp = (-1) * tmp;
                }

                //a3
                if(a % 5 == 2){
                    a3++;
                }

                //a4
                if(a % 5 == 3){
                    a4 += a;
                    n ++;
                }
                //a5
                if(a % 5 == 4 ){
                    if(a5 < a){
                        a5 = a;
                    }
                }
            }

            if(a1 == 0){
                System.out.print("N" + " ");
            }else{
                System.out.print(a1 +" ");
            }
            if(flag){
                System.out.print(a2 +" ");

            }else{
                System.out.print("N" + " ");
            }
            if(a3 == 0){
                System.out.print("N" + " ");
            }else{
                System.out.print(a3 +" ");
            }
            if(n == 0){
                System.out.print("N" + " ");
            }else{
                System.out.printf("%.1f ",a4/n);
            }
            if(a5 == 0){
                System.out.print("N");
            }else{
                System.out.print(a5);
            }

        }
        in.close();
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值