首页 > 编程语言 >PAT-basic-1012 数字分类 java

PAT-basic-1012 数字分类 java

时间:2023-02-18 13:55:06浏览次数:45  
标签:PAT 数字 int basic else flag num ans 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

输入样例 1:

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

输出样例 1:

30 11 2 9.7 9

输入样例 2:

8 1 2 4 5 6 7 9 16

输出样例 2:

N 11 2 N 9
 

二、解析


用ans[]来存储A1—A5的值,用flag[]来存储是否存在。另外,flag[1]可以用来判断正负号,flag[3]还可以用来表示个数。比较繁琐,需要细心。

三、代码


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int ans[] = new int[5];
        int flag[] = new int[5];
        for (int i = 0; i < n; i++) {
            int num = input.nextInt();
            if(num % 10 == 0){
                ans[0] += num;
                flag[0] = 1;
            }
            else if(num % 5 == 1){
                if(flag[1]++ % 2 == 0) ans[1] += num;
                else ans[1] -= num;
            }
            else if(num % 5 == 2){
                ans[2]++;
                flag[2] = 1;
            }
            else if(num % 5 == 3) {
                ans[3] += num;
                flag[3]++;
            }
            else if(num % 5 == 4)
                if(ans[4] < num){
                    ans[4] = num;
                    flag[4] = 1;
                }
        }

        for(int i=0; i<5; i++){
            if(i==0){
                if(flag[i] >= 1)
                    System.out.print(ans[i]);
                else
                    System.out.print("N");
            }else{
                if(flag[i] >= 1){
                    if(i == 3)
                        System.out.printf(" %.1f", ans[i]*1.0/flag[i]);
                    else
                        System.out.printf(" %d", ans[i]);
                }else
                    System.out.print(" N");
            }
        }
    }
}

 

标签:PAT,数字,int,basic,else,flag,num,ans,java
From: https://www.cnblogs.com/langweixianszu/p/17132452.html

相关文章

  • 《阿里巴巴Java开发规范》领域模型的部分介绍
    《阿里巴巴Java开发规范》关于领域模型的部分介绍如下分层领域模型规约:DO(DataObject):此对象与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO(DataTran......
  • PAT-basic-1011 A+B 和 C java
    一、题目给定区间[−231,231]内的3个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第1行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组......
  • Golang基础-Basics
    PackagesGo语言中的包和其他语言的库或模块的概念类似,目的都是为了支持模块化、封装、单独编译和代码重用。一个包的源代码保存在一个或多个以.go为文件后缀名的源文件中,......
  • Jenkins Pipeline Basic Steps插件之readFile和writeFile方法
    前言本篇继续学习PipelineBasicSteps插件的两个方法–readFile(读取文件)和writeFile(写入文件)readFile参数file:工作区中的文件路径encoding:读取文件时使用的编码。如果......
  • PAT-basic-1010 一元多项式求导 java
    一、题目设计函数求一元多项式的导数。(注:xn(n为整数)的一阶导数为nxn−1。)输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以......
  • PAT-basic-1008 数组元素循环右移问题 java
    一、题目一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN−1)变换为(AN−M⋯AN−1A0A1⋯AN−M−1)(最后M个数......
  • PAT-basic-1009 说反话 java
    一、题目给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干......
  • java便捷的word导出工具(officejj)
    写在最前面officejj不仅支持导出word,它操作excel和pdf也很简单。官方文档:https://doc.javaex.cn/officejj怎么发现它的公司主要是为学校开发管理系统的,然后就经常要导......
  • PAT-basic-1006 换个格式输出整数 java
    一、题目让我们用字母B来表示“百”、字母S表示“十”,用12...n来表示不为零的个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSS......
  • PAT-basic-1007 素数对猜想 java
    一、题目让我们定义dn为:dn=p(n+1)−p~n,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意......