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 ...
随机推荐
- windows 中如何定位恶意软件的藏身位置
目录 一: 下载spy++ 打开后 点击 搜索下面的查找窗口(Alt+F3) 点击 查找程序工具 右侧的 靶子一样的图标,鼠标左键按住不放,拖放到 弹窗上面,弹窗周围会出现 黑框. 然后 我们点击确定 ...
- 为什么需要动态SQL
为什么需要动态SQL 在使用EF或者写SQL语句时,查询条件往往是这样一种非常常见的逻辑:如果客户填了查询信息,则查询该条件:如果客户没填,则返回所有数据. 我常常看到很多人解决这类问题时使用了错误的 ...
- 数据对象如何定义为Java代码示例
想将数据保存为这样子: [{ "subject": { "code": "B123", "words": [{ &quo ...
- kube-prometheus部署
一.从git拉取相应yaml文件 git clone https://github.com/coreos/kube-prometheus.git 二.修改grafana及prometheus的serv ...
- ES6中的关键字 - const
const 关键字 1.声明后的值不可以修改: const name = "小康哥"; name = "小康"; // 报错,const为constant的缩写 ...
- 【LeetCode】缺失的第一个正数【原地HashMap】
给定一个未排序的整数数组,找出其中没有出现的最小的正整数. 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11 ...
- [转帖]ORACLE 12C连接时报ORA28040和ORA01017的错误
ORACLE 12C连接时报ORA28040和ORA01017的错误 http://blog.itpub.net/12679300/viewspace-2150667/ 我一直在的处理方式是让更新or ...
- OI之路
由于各种因素 学习.初赛.时间... 我的oi可能会结束, 我也不甘于放弃, 所以 综合今后的表现, 我再决定 以后我尽量写博客.
- 一个萝卜一个坑#我的C坑_两局变量
前面的笔记慢慢补 全局变量和局部变量的区别: 1.首字母 尽量不用全局变量原因: 1.占内存 2.降低通用性和可靠性 3.降清晰度 若在同一源文件中,全局变量和局部变量同名,记住很重要的一条:实参决定 ...
- ubuntu docker 搭建 mongodb,开启授权访问 redis,mysql mssql 备份还原
命令安装docker 如果您想从Ubuntu存储库安装docker版本,则可以运行下面的apt命令. sudo apt install docker.io等到安装完成后,您可以启动Docker并使用s ...