C++学习之路 | PTA乙级—— 1012 数字分类 (20分)(精简)
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 的数字的平均数,精确到小数点后 1 位;
A
5
= 被 5 除后余 4 的数字中最大数字。
输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的 N 个正整数,按题目要求计算 A
1
~A
5
并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 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
由于当时c++不会,导致代码复杂,不多说,直接上柳神代码
#include <iostream>
#include <vector>
using namespace std;
int main() {int n, num, A1 = 0, A2 = 0, A5 = 0;//A1表示能被 5 整除的数字中所有偶数的和;//A2表示被 5 除后余 1 的数字按给出顺序进行交错求和//A5表示被 5 除后余 4 的数字中最大数字。double A4 = 0.0;//A4表示 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位,double;cin >> n;vector<int> v[5];//定义5个数组,分别存储不同类别的数,相当于v[5][?]的二维数组。for (int i = 0; i < n; i++) {cin >> num;v[num%5].push_back(num);//非常巧妙,直接利用余数进行分类}for (int i = 0; i < 5; i++) {for (int j = 0; j < v[i].size(); j++) {if (i == 0 && v[i][j] % 2 == 0) A1 += v[i][j];//整除if (i == 1 && j % 2 == 0) A2 += v[i][j];//利用下标来判断加减if (i == 1 && j % 2 == 1) A2 -= v[i][j];//if (i == 3) A4 += v[i][j];//余3if (i == 4 && v[i][j] > A5) A5 = v[i][j];}}for (int i = 0; i < 5; i++) {if (i != 0) printf(" ");if (i == 0 && A1 == 0 || i != 0 && v[i].size() == 0) {printf("N"); continue;}if (i == 0) printf("%d", A1);if (i == 1) printf("%d", A2);if (i == 2) printf("%d", v[2].size());if (i == 3) printf("%.1f", A4 / v[3].size());if (i == 4) printf("%d", A5);}return 0;
}
这个是我的,不建议阅读
C++学习之路 | PTA乙级—— 1012 数字分类 (20分)(精简)相关推荐
- C++学习之路 | PTA乙级—— 1048 数字加密 (20 分)(精简)
1048 数字加密 (20 分) 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 ...
- C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)
1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这 ...
- C++学习之路 | PTA乙级—— 1084 外观数列 (20 分)(精简)
1084 外观数列 (20 分) 外观数列是指具有以下特点的整数序列: d, d1, d111, d113, d11231, d112213111, - 它从不等于 1 的数字 d 开始,序列的第 n ...
- C++学习之路 | PTA乙级—— 1082 射击比赛 (20 分)(精简)
1082 射击比赛 (20 分) 本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军:谁差得最远,谁就是菜鸟.本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟.我 ...
- C++学习之路 | PTA乙级—— 1068 万绿丛中一点红 (20 分)(精简)
1068 万绿丛中一点红 (20 分) 对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点 ...
- C++学习之路 | PTA乙级—— 1029 旧键盘 (20 分)(精简)
1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...
- C++学习之路 | PTA乙级—— 1013 数素数 (20分)(精简)
1013 数素数 (20分) 令 P i 表示第 i 个素数.现任给两个正整数 M≤N≤10 4 ,请输出 P M 到 P N 的所有素数. 输入格式: 输入在一行中给 ...
- C++学习之路 | PTA乙级—— 1063 计算谱半径 (20 分)(精简)
1063 计算谱半径 (20 分) 在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a 1 +b 1 i,⋯ ...
- C++学习之路 | PTA乙级—— 1057 数零壹 (20 分)(精简)
1057 数零壹 (20 分) 给定一串长度不超过 10 5 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N ...
最新文章
- python那么慢为什么还有人用-为什么Python运算慢还拿来搞AI?这三点大多数都不知道?...
- ML之sklearn:sklearn库中的ShuffleSplit()函数和StratifiedShuffleSplit()函数的讲解
- gRPC源码分析2-Server的建立
- 【C语言学习】国嵌21__指针基础
- 人工智能,不止于技术的革命--WOT2017全球创新技术峰会开幕
- Docker的特性解析
- 如何从函数中获取指向并调用该函数的函数指针的地址?
- Java暑期实训——简易计算器
- javashop B2C开源电商系统源代码
- localhost 127.0.0.1 本机IP
- android 聊天动态表情包,gif表情包制作app下载-GIF表情包 安卓版v1.0-PC6安卓网
- 关于STM32的AD采样串口输出
- 冯言冯语说DSP(二)序列的z变换
- windows服务器硬盘怎么扩容,亚马逊Amazon EC2 Windows服务器磁盘扩容操作步骤
- java统计英文单词_java单词统计
- Redhat7.5升级openssh到8.2p1
- azure java sdk_使用 Azure SDK for Java
- ISP-坏点校正(DPC)
- 一个月面试大厂,中厂,小厂的总结|2021 年中总结
- Enriching Local and Global Contexts for Temporal Action Localization ContextLoc论文阅读笔记