PAT 乙级 1012.数字分类 C++/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
分析:
对输入的每个数字num进行mod 5,将得到的值存放在下标为 num % 5的数组中,每次添加一个数
然后分别对每个数组中保存的数字进行处理
C++实现:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std; bool myCmp(int a, int b)
{
return a > b;
} //数字分类
int main()
{
// a mod 5最大值为4
int A1 = ; //被 5 整除的数字中,偶数的和
int A2 = ; //将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算n1 - n2 + n3 - n4...
int A3 = ; //被 5 除后余 2 的数字的个数
double A4 = ; //被 5 除后余 3 的数字的平均数,精确到小数点后 1 位
int A5 = ; //被 5 除后余 4 的数字中最大数字 - 排序即可 int N;
cin >> N; vector<vector<int> > vec(, vector<int>());
int temp;
for (int i = ; i < N; ++i)
{
cin >> temp;
vec[temp % ].push_back(temp);
} //求A1;
int len = vec[].size();
for (int i = ; i < len; ++i)
{
if (vec[][i] % == )
{
A1 += vec[][i];
}
} //求A2
len = vec[].size();
if (len != )
{
for (int i = ; i < len; ++i)
{
if (i % == )
{
//数组中的第偶数项,取负数 a[1], a[3], a[5]
// n1 - n2 + n3 - n4
// 相当于a[0] - a[1] + a[2] - a[3];
vec[][i] *= -;
}
A2 += vec[][i];
}
} //求A3
A3 = vec[].size(); //求A4
if (vec[].size() != )
{
for (int i = ; i < vec[].size(); ++i)
{
A4 += vec[][i];
}
A4 /= vec[].size();
} //求A5
if (vec[].size() != )
{
sort(vec[].begin(), vec[].end(), myCmp);
A5 = vec[][];
} for (int i = ; i < ; ++i)
{
if (i != )
{
cout << " "; //控制空格输出
}
if (i == && A1 == || i != && vec[i].size() == )
{
cout << "N";
continue;
}
if (i == )
{
cout << A1;
}
else if (i == )
{
cout << A2;
}
else if (i == )
{
cout << A3;
}
else if (i == )
{
printf("%.1f", A4);
}
else if (i == )
{
cout << A5;
}
}
return ;
}
小结
求A1-A5的时候要判断vector长度是否为0,否则会发生段错误(越界)
求A5可以直接从大到小排序,取第一个数字
输出A4的时候用占位符%.1lf控制输出格式,精确到小数点后一位
循环中判断条件 if (i == && A1 == || i != && vec[i].size() == ) 如果没有 i == && A1 == ,若输入0,输出结果就会是0而不是N
PAT 乙级 1012.数字分类 C++/Java的更多相关文章
- PAT(B) 1012 数字分类(Java)
题目链接:1012 数字分类 代码 /** * Score 20 * Run Time 142ms * @author wowpH * @version 1.1 */ import java.util ...
- PAT乙级 1012. 数字分类 (20)
1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...
- [C++]PAT乙级1012.数字分类 (20/20)
/* 1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和, ...
- PAT 乙级 1012 数字分类 (20) C++版
1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...
- PAT 乙级 -- 1012 -- 数字分类
题目简介 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4 ...
- 【PAT】1012. 数字分类 (20)
1012. 数字分类 (20) 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算 ...
- PAT 乙级 1048.数字加密 C++/Java
题目来源 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余——这里用 ...
- PAT 乙级 1019.数字黑洞 C++/Java
题目来源 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样做,我们很快会停在有 ...
- PAT Basic 1012 数字分类 (20 分)
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ...
随机推荐
- 1-7docke的网络模式
1.Bridge模式 bridge 模式是 docker 的默认⽹络模式,不写 –net 参数,就是 bridge 模式.比如使⽤ docker run - p 时 工作模式从网上找了一个,如下 例子 ...
- UI自动化实例:遍历点击带有滚动条的列表每一项
需求:验证列表每条资讯里的用户数是否正确.该列表分页请求数据,每页10条,每次滚动到底部自动增量请求10条. 实现自动化必要性: 1 资讯每天不定时更新需经常性验证, 程序更新或者环境切换需验证所有资 ...
- 连上Microbit板
我们是在自己电脑上,用Mu编程,最终程序要烧录到Microbi板子的控制芯片中去,还记得这款芯片是哪家公司生产的?是多少位的?呵呵. 因此,我们要把板子和电脑连起来,用常见的一大一小的USB线就可以了 ...
- Python3版本号比较代码实现
一.版本号比较的困难 不能直接以字符串形式进行比较:对于1.3和1.4直接以字符串进行比较是可以正确得出1.4比1.3大:但如果是1.3和1.14还直接进字符串比较那就是1.3比1.14大那就不对了. ...
- 超级简单POI多sheet导出Excel实战
本章节主要基于上一章节单sheet导出的基础上进行改造实现多sheet的导出,上一章节参考地址:https://www.cnblogs.com/sunny1009/p/11437005.html 1. ...
- Centos Docker 安装 Apache Guacamole
经常在ubuntu上折腾,偶尔在centos来也来玩一把吧 1.安装DOCKER cd /etc/yum.repos.d wget https://download.docker.com/linux/ ...
- 卸载webpack,降低版本
卸载:npm uninstall webpack -g 重新安装:npm install webpack@3.7.1 -g
- C#里面如何判断一个Object是否是某种类型
第一种方法 var isA = oldObject.GetType() == typeof(Dictionary<string, string>) 第二种方法 var isB = oldO ...
- 2019 荔枝java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.荔枝等公司offer,岗位是Java后端开发,因为发展原因最终选择去了荔枝,入职一年时间了,也成为了面试官,之 ...
- English--五大基本句型基本概念
English|五大基本句型基本概念 英语的基本句型是整个英语的框架体系,所以,祝愿看到此文的伙伴们,都可以牢牢掌握! 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点的描述.力 ...