PAT乙级Java实现_1012. 数字分类 _附详细解题注释_12

PAT 1012 数字分类 (20分)(Java) 题目描述 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: 输入格式:   每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。 输出格式:   对给定的 N 个正整数,按题目要求计算 A​1​​ ~A​5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。   若其中... 阅读详情

1012. 数字分类 (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

import java.util.Scanner;
public class PAT_B_1012
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		
		int A1 = 0;//定义表示数字类别的5个变量
		int A2 = 0;
		int A2flag = 1;//用来辅助交错求和,用1*-1来改变符号
		int A3 = 0;
		int A4sum = 0;
		int A4cnt = 0;
		int A5 = 0;
		
		for(int i = 0; i < n; i++)
		{
			int num = in.nextInt();//接收数字
			if((num % 5 == 0) && (num % 2 == 0))//5个if判断数字类别
				A1 = A1 + num;
			if(num % 5 == 1)
			{
				A2 = A2 + (A2flag*num);
				A2flag = A2flag * -1;
			}
			if(num % 5 == 2)
				A3++;
			if(num % 5 == 3)
			{
				A4sum = A4sum + num;
				A4cnt++;
			}
			if((num % 5 == 4) && (num > A5))
				A5 = num;
		}
		
		print(A1,1);//调用输出函数
		print(A2,0);
		print(A3,0);
		if(A4cnt == 0)
			System.out.print(" N" );
		else
			System.out.printf(" %.1f",(A4sum * 1.0 / A4cnt));
		print(A5,0);
	}
	
	public static void print(int n, int flag )//输出函数
	{
		if(flag != 1)
			System.out.print(" ");
		if(n == 0)
			System.out.print("N");
		else
			System.out.print(n);
	}
	

}

醉了。。牛客网提交完美通过,PAT提交全超时。

想起陈越姥姥说过不要用Scanner,果然Scanner太慢了。

package pat_b;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class PAT_B_1012
{
    public static void main(String[] args) throws Exception 
    {//用Scanner输入太慢,换成BufferedReader
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        String s = bufferedReader.readLine();
        
    	
        String[] arrayS = s.split("\\s");//将输入的数字字符串按空格切割
        int capacity = 0;

        capacity = Integer.valueOf(arrayS[0]);//拿到输入的第一个数字,代表后面要分类的数字
        int tmp = 0;//用来临时存储每个要分类的数字的值
        int A1 = 0, A2 = 0,A2help = 1, A3 = 0, A5 = 0, countA4 = 0, sumA4 = 0, j = 0;
        boolean existA2 = false;//即便有A2类数字,交叉相加后也可能得0,所以需要引入一个变量要判断是否有A2这类数
        for (int i = 0; i < capacity; i++) 
        {
        	tmp = Integer.valueOf(arrayS[i+1]);
            if (tmp % 10 == 0) 
            {
                A1 += tmp;
            } 
            else if (tmp % 5 == 1) 
            {
                A2 += tmp *A2help;
                existA2 = true;
                A2help*=-1;//乘-1是为了交叉相加
            } 
            else if (tmp % 5 == 2) 
            {
                A3++;
            } 
            else if (tmp % 5 == 3) 
            {
                sumA4 += tmp;
                countA4++;
            } 
            else if (tmp % 5 == 4) 
            {
                A5 = A5 > tmp ? A5 : tmp;//保留最大值
            }
        }
        
        //格式化输出
        if (A1 != 0) {
            System.out.print(A1 + " ");
        } else {
            System.out.print("N ");
        }
        if (existA2) {
            System.out.print(A2 + " ");
        } else {
            System.out.print("N ");
        }
        if (A3 != 0) {
            System.out.print(A3 + " ");
        } else {
            System.out.print("N ");
        }
        if (countA4 != 0) {
            double avg = (double) sumA4 / countA4;
            System.out.print(Math.round(avg * 10) / 10.0 + " ");
        } else {
            System.out.print("N ");
        }
        if (A5 != 0) {
            System.out.println(A5);
        } else {
            System.out.println("N");
        }
    }
}

尽力了。。。PAT对Java不是很友好。

PTA(JAVA)——1012 数字分类 (20 分) PTA(JAVA)——1012 数字分类 (20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和; A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1​​−n​2​​+n​3​​−n​4​​⋯; A​3​​ = 被 5 除后余 2 的数字的个数; A​4​​ = 被 5 除后余 3 的数字... 阅读详情

相关推荐

LaTeX小白必看:5分钟搞定GB/T 7714-2005参考文献格式(Texmaker+BibTeX实战)

本文为LaTeX初学者提供了使用Texmaker编辑器和BibTeX工具链,快速实现GB/T 7714-2005参考文献格式的实战指南。文章详细解析了从获取gbt7714-2005.bst样式文件、编写.bib数据库到四步编译流程的核心步骤,并附有常见问题解决方案,帮助用户高效、准确地完成学术论文的参考文献排版。

weixin_29295541的博客 338

Pat 1012数字分类(Java实现)

Pat 1012数字分类(Java实现)

weixin_72315338的博客 404

【技术实践指南】Python解析FactSet Revere供应链数据:构建企业级断裂与重构监测指标

本文提供了一份企业级Python实践指南,详细解析如何利用FactSet Revere供应链数据库,构建供应链断裂与重构监测指标。内容涵盖数据清洗、关系对筛选、时间序列处理及核心指标(断裂、恢复、转移)的工程化实现,旨在帮助数据工程师与分析师搭建自动化、可解释的供应链风险监控系统。

weixin_29051811的博客 932

PAT乙级算法-P1012(JAVA实现)

PAT真题训练乙级算法解析P1012 java实现

没有技术的小白的博客 283

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

强化学习_06_pytorch-TD3实践(BipedalWalkerHardcore-v3)

DDPG的critic会高估, 从而导致actor策略失败。TD3是增加了三个关键技巧优化DDPG。经过优化后的TD3(Twin Dalayed DDPG 双延迟深度确定性策略梯度算法)适合于具有高维连续动作空间的任务。

RL小站 2690

PAT刷题:1012数字分类【java】

题目: 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:A 1=能被 5 整除的数字中所有偶数的和;A 2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n 1 −n 2 +n 3 −n4 ⋯;A 3 = 被 5 除后余 2 的数字的个数;A 4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;A 5 ​ = 被 5 除后余 4 的数字中最大数字。 代码实现: import java.util.Scanner; public class Main { s

Triumph_light的博客 1100

顶会新宠!Gate+Attention创新思路发A会

性能提升:在Places2自然场景和CelebA-HQ人脸数据集上,与以往方法相比,该系统在自由形式掩码修复任务中取得了更高的质量和更低的误差(例如,平均ℓ1误差和ℓ2误差显著降低)。硬件效率提升:Griffin和Hawk在TPU-v3上的训练效率与Transformer相当,且在推理时具有更低的延迟和显著更高的吞吐量。门控卷积:提出了一种新的门控卷积机制,通过学习每个通道在每个空间位置的动态特征选择机制,解决了传统卷积将所有输入像素视为有效像素的问题。

2501_92785035的博客 974

PAT 1012. 数字分类 (20) —— Java(未满分)

给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入格式: 每个输入包含1个测试用

akirameia的博客 1142

【XCharts插件】3-1、制作图表及代码生成图表(v1.0)

XCharts插件是一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。【Unity3D插件】XCharts插件完全教程《全网最全》-专栏文章目录OK,这是v1.0版本的XCharts插件的创建图表,代码生成图表的教程。可能有人要问了,既然都更新到v3.0了,还写啥v1.0教程呢。因为有些项目就是用v1.0去制作图表了,也没有太多的精力去更新插件,所以就一直用的v1.0,而且v1.0已经能实现大部分的图标样式了,所以,博主还是单独写了一篇文章来介绍v1.0的功能。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1293

【LAMMPS学习】八、基础知识(4.5)TIP5P水模型

​ 五点 TIP5P 刚性水模型通过添加两个通常无质量的附加位点 L 来扩展three-point TIP3P model,其中放置与氧原子相关的电荷。这些位点 L 位于距氧原子固定距离处,形成从 HOH 平面旋转 90 度的四面角。因此,这些位点在某种程度上近似于氧的孤对,从而改善了水结构,与four-point TIP4P model相比变得更加“四面体”。

荷塘阅色 1421

1012 数字分类 java

给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​= 能被 5 整除的数字中所有偶数的和; A​2​​= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n​1​​−n​2​​+n​3​​−n​4​​⋯; A​3​​= 被 5 除后余 2 的数字的个数; A​4​​= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A​5​...

LangWeiXian_的博客 499

SPSS 多重共线性问题:编程解决方案

多重共线性会导致回归模型的不稳定性,使得估计的回归系数失去解释力,降低模型的准确性和可靠性。通过执行这些代码,你将能够计算和查看VIF和CI的结果,并确定是否存在多重共线性问题。上述代码执行了一个回归分析,其中A是我们感兴趣的因变量,B、C、D和E是我们要检查的自变量。接下来,我们将执行多重共线性的检测。通过执行上述代码,你将能够看到每个自变量的VIF和CI值,以及预先设置的阈值。上述代码将计算VIF和CI的值,并将结果写入指定路径的结果文件中。接下来,我们可以使用以下代码来计算和显示VIF和CI的值。

CyberGenius的博客 1426

PAT乙级【Java题解合集】

超级全的PAT的JAVA题解

小羊不会飞的博客 3732

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

PAT乙级算法-P1013(JAVA实现)

PAT真题训练乙级算法解析P1013 java实现

没有技术的小白的博客 312

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

PAT乙级1012,需要各种判断要求清晰的思维,有题目解析和代码注释

1012 数字分类 (20分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1= 能被 5 整除的数字中所有偶数的和;(情况一) A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1−n2+n3−n4⋯;(情况二) A3= 被 5 除后余 2 的数字的个数;(情况三) A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;(情况四) A5= 被 5 除后余 4 的数字中最大数字。(情况五) 输入格式: 每个输入包含 1 个测试

优快云_Lrcx的博客 189

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【PAT】乙级1012 数字分类(JAVA版)

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; import java.text...

weixin_42234367的博客 418

1012. 数字分类 (20)-PAT乙级真题-浙大PAT乙级真题java实现

小景哥哥个人网站点击打开 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中

JingLisen的博客 649

PAT乙级 1012 数字分类 (JAVA)

1012 数字分类 (20 分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1= 能被 5 整除的数字中所有偶数的和; A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1−n2+n3−n4⋯; A​3= 被 5 除后余 2 的数字的个数; A4= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位; A5= 被 5 除后余 4 的数字中...

涩。 276

PAT(B) 1012 数字分类(Java)

题目链接:1012 数字分类 代码 /** * Score 20 * Run Time 142ms * @author wowpH * @version 1.1 */ import java.util.Scanner; public class Main { private static void output(int x, int count) { if (count &gt...

wowpH 301

pat(B) 1012. 数字分类

代码: #include #include #include #define INF 1<<30 using namespace std; int a[1005]; int main() { int n; int i,j; while(scanf("%d",&n)==1) { int ans1=0,ans2=0,ans3=0,ans5=-INF; double ans4;

24小时的程序员 1959

浙江大学PAT上机题解析之1012. 数字分类 (20)

1012. 数字分类 (20) 时间限制 50 ms 内存限制 32000 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所...

weixin_30813225的博客 856

PAT 乙级 1012 数字分类 Java解决

写在最前:欢迎批评,欢迎任意地方的指正,用你们的优秀的java代码砸死我吧!! 问题—————— 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​= 能被 5 整除的数字中所有偶数的和; A​2​​= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n​1​​−n​2​​+n​3​​−n​4​​⋯; A​3​​= 被 5 除后余 2 的...

TonyHTY的博客 256

PAT甲级1012,1015解题报告

1012 1012 The Best Rank (25 分) To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programming Language, M - Mathematics (Calculu...

TateBrwonJava的博客 551

浙大PAT考试1009~1012(1010是个神题。。)

哎,pat1010居然用java写的,不仅用java写的,还加了二分,,,唉,智商捉急啊,主要是pat有的范围也不给清楚。给人造成遐想的空间。。 还是按顺序介绍。。 题目地址:http://pat.zju.edu.cn/contests/pat-a-practise 1009: 题目大意:模拟多项式相乘的,比如(5x^3+4x)*(4x^2+6)这样的,直接

布生气 3174
上一篇: PAT乙级Java实现_1011. A+B和C_11
下一篇: 理解Java字节流与字符流的区别与联系 _07
coder__666
博客等级 码龄9年 42粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值