当前位置: 首页 > news >正文

PAT 乙级题目讲解:1012《数字分类》

✅ PAT 乙级题目讲解:1012《数字分类》

摘要:本文详细讲解 PAT 乙级 1012 题《数字分类》的完整解题过程。题目要求对一系列正整数按模 5 余数分成五类,分别完成求和、交错求和、计数、求平均值、求最大值等运算,无数据时输出N。文章从题目分析、样例拆解入手,结合变量设计与代码实现,给出 C++ 满分题解,并总结常见错误与输出格式要点。适合 PAT 备考初学者理解分类统计模型与模拟类题目的处理套路。


🧩 题目简介

本题要求对一系列正整数按特定规则分类,并依次输出五类指标:

  • A1A_1A1:能被 5 整除的偶数的和;
  • A2A_2A2:被 5 除余 1 的数字交错求和(正负交替);
  • A3A_3A3:被 5 除余 2 的数字个数;
  • A4A_4A4:被 5 除余 3 的数字平均值(保留一位小数);
  • A5A_5A5:被 5 除余 4 的数字中的最大值。

若某类数字不存在,用N代替输出。


🧪 样例分析

输入:

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

各分类如下:

  • A1A_1A11020,都是能被 5 整除且为偶数 → 和为30
  • A2A_2A26116→ 被 5 除余 1 → 依次交错相加:1−6+16=111 - 6 + 16 = 1116+16=11
  • A3A_3A327→ 被 5 除余 2 → 个数为2
  • A4A_4A43818→ 被 5 除余 3 → 平均值为(3+8+18)/3=9.7(3 + 8 + 18) / 3 = 9.7(3+8+18)/3=9.7
  • A5A_5A549→ 被 5 除余 4 → 最大值为9

输出:

30 11 2 9.7 9

🔍 解题思路

📎 变量说明

变量名含义
n输入的数字总个数
t当前读入的数字
a[10]存储每类数字的累加值或最大值
c2A2 类的计数器,用于判断加还是减
c4A4 类的计数器,用于计算平均数分母
f[10]标记各类是否存在有效数字

✅ Step 1:读入所有数字并分类处理

分类依据是tmod5t mod 5tmod5

while(n--){cin>>t;if(t%2==0&&t%5==0){f[1]=1;a[1]+=t;}if(t%5==1){c2++;if(c2%2)a[2]+=t;elsea[2]-=t;f[2]=1;}if(t%5==2){a[3]++;f[3]=1;}if(t%5==3){a[4]+=t;c4++;f[4]=1;}if(t%5==4&&t>a[5]){a[5]=t;f[5]=1;}}

✅ Step 2:输出格式控制

注意:

  • 不存在的分类输出N
  • A4A_4A4保留一位小数
  • 每个值之间以空格隔开,末尾不加多余空格
for(inti=1;i<=5;i++){if(!f[i]){printf("N");}elseif(i==4){printf("%.1lf",a[4]*1.0/c4);}else{printf("%d",a[i]);}if(i<5)printf(" ");}

✅ 完整代码

#include<bits/stdc++.h>usingnamespacestd;inta[10],n,t,c2,c4;boolf[10];// 标记 a[i] 是否存在intmain(){cin>>n;while(n--){cin>>t;if(t%2==0&&t%5==0){f[1]=1;a[1]+=t;}if(t%5==1){c2++;if(c2%2)a[2]+=t;elsea[2]-=t;f[2]=1;}if(t%5==2){a[3]++;f[3]=1;}if(t%5==3){a[4]+=t;c4++;f[4]=1;}if(t%5==4&&t>a[5]){a[5]=t;f[5]=1;}}for(inti=1;i<=5;i++){if(!f[i]){printf("N");}elseif(i==4){printf("%.1lf",a[4]*1.0/c4);}else{printf("%d",a[i]);}if(i<5)printf(" ");}return0;}

🚧 常见错误提醒

错误类型说明
忘记判断是否存在数据未使用f[i]判断是否需要输出N
A2A_2A2正负号处理错误应用交错加减(奇加偶减)
A4A_4A4小数处理不精确忘记保留一位小数
输出格式问题空格控制或末尾多空格

✅ 总结归纳

  • 本题核心在于“分类 + 模拟 + 格式控制”
  • 每类统计逻辑独立,可单独处理
  • 输出格式是考试中常见扣分点,注意边界和控制细节

时间复杂度O(n)O(n)O(n)
空间复杂度O(1)O(1)O(1)(使用常数空间)


🧠 思维拓展

  • 本题可作为“分类统计”模型题,适合初学者熟悉基本输入处理与条件判断;
  • 可尝试封装成函数处理五类逻辑,增强代码模块化;
http://www.jsqmd.com/news/1120703/

相关文章:

  • PTEF框架入门:从零开始建立紫队演练计划的7天指南
  • PyTorch神经网络基础与实战:从FNN到RNN
  • nwpu-cram之机器人编程:ROS基础与应用
  • DeepSeek国产大模型家族:开源、中文强、工程友好
  • MEGA_F 00000-2006-000-06 直线驱动器模块
  • ZFS-inplace-rebalancing进度监控与日志分析完全指南
  • CANN PID控制性能指标
  • SteamShutdown终极指南:让电脑在Steam下载完成后自动关闭
  • 终极Varnish Dashboard:实时监控多服务器的完整解决方案
  • PyTorch实战:CNN卷积神经网络进阶技巧与优化
  • TVA:具身智能的动力引擎与能力底座(系列)
  • Kronos股票预测AI:三分钟搭建你的智能投资大脑,准确率突破85%的终极方案
  • YOLOv8工业落地全流程:从网络解析到多平台部署实战
  • PAT 乙级题目讲解:1016《部分A+B》
  • 新能源汽车热管理系统核心零部件及工作原理详解
  • PyMiniRacer异常处理全攻略:解析错误类型与调试技巧
  • Kimi Chat vs GPT-4o中文编程实测:从LeetCode到Django开发
  • 炉石传说加速器:用HsMod提升游戏效率300%的终极指南
  • Xournal++:一款彻底改变你数字笔记体验的开源手写笔记神器
  • uiv开发实战:从零开始构建一个完整的管理后台界面
  • 如何快速实现社交媒体数据采集:Python开发者的完整指南
  • 终极炉石传说增强插件HsMod:三步安装解锁50+实用功能
  • Java并发编程:Callable与ReentrantLock实战解析
  • 豆包AI深度评测:对话连续性、风格复刻与模糊指令解析实战
  • 计算机毕业设计之基于springboot框架的大学生体测管理系统
  • 计算机毕业设计之基于大数据的显示器社交媒体情感分析
  • Wireshark实战解析SSL/TLS握手:从密码学原理到网络包诊断
  • 30分钟上手NCSN:基于PyTorch的快速实现教程
  • 多层超表面空间板设计与电磁调控技术解析
  • Agent Skills技能质量保证:建立技能开发流程的7个步骤