PAT乙级 1012 数字分类 (20 分)
题目内容
给定一系列正整数,请按要求对数字进行分类,并输出以下 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
结尾无空行
解题思路
题目中给的N的数据范围是1000,所以我们开辟一个大于1000的数组即可使用,但为了增加难度,我选择了另一种实现方式,即使用malloc创建出动态数组来实现。设计5个函数减少代码之间的耦合度,这5个函数分别对应题目中的5个要求,详细见代码
详细代码
#include <iostream>
#include <algorithm>
#include <cstdlib>
using namespace std;
int is_a[5] = {0};
int N;
int a1(int a[]){int sum = 0,count = 0;for(int i = 0;i<N;i++){if(a[i]%5==0&&a[i]%2==0) {sum+=a[i];count++;}}if(count == 0) is_a[0] = 1;return sum;
}
int a2(int a[]){int sum = 0,p = 1,count = 0;for(int i = 0;i<N;i++){if(a[i]%5==1) {sum+=a[i]*p;p = -p;count++;}}if(count == 0) is_a[1] = 1;return sum;}
int a3(int a[]){int count = 0;for(int i = 0;i<N;i++){if(a[i]%5==2) {count++;}}if(count == 0) is_a[2] = 1;return count;}
float a4(int a[]){float sum = 0,count = 0;for(int i = 0;i<N;i++){if(a[i]%5==3) {sum+=a[i];count++;}}if(count == 0) is_a[3] = 1;return sum/count;}
int a5(int a[]){int max = 0,count = 0;for(int i = 0;i<N;i++){if(a[i]%5==4) {if(a[i]>max) max = a[i];count++;}}if(count == 0) is_a[4] = 1;return max;
}
int main(){int n,*a;cin>>n;N = n;a = (int *)malloc(n*sizeof(int));for(int i = 0;i<n;i++){cin>>a[i];}a1(a);a2(a);a3(a);a4(a);a5(a);if(is_a[0]==1) cout<<"N ";else cout<<a1(a)<<" ";if(is_a[1]==1) cout<<"N ";else cout<<a2(a)<<" ";if(is_a[2]==1) cout<<"N ";else cout<<a3(a)<<" ";if(is_a[3]==1) cout<<"N ";else printf("%.1f ",a4(a));if(is_a[4]==1) cout<<"N";else cout<<a5(a);}
PAT乙级 1012 数字分类 (20 分)相关推荐
- C++学习之路 | PTA乙级—— 1012 数字分类 (20分)(精简)
1012 数字分类 (20分) 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A 1 = 能被 5 整除的数字中所有偶数的和: A 2 = 将被 5 除后余 1 ...
- PTA_Pra 1012 数字分类 (20分)
测试点7出错,原因未知,欢迎讨论 /*PAT (Basic Level) Practice (中文)1012 数字分类 (20分)测试点7出错 原因未知测试点8出错 交错相减其和可能为0 */ # i ...
- PAT乙级1012.数字分类
数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进行分类,并输 ...
- pat 乙级 1012 数字分类(C++)
题目 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1的数字按给出顺序进行交错求和,即计算n1-n2+ ...
- 【C++】PAT乙级:1012 数字分类 (20 分)
本题无甚难度,也不是什么好题,只是刚学一周c++试下手 笔记:<iomanip>库中 cout << setiosflags(ios::fixed) << setp ...
- PAT乙类之1012 数字分类 (20 分)
一. 题目 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1= 能被 5 整除的数字中所有偶数的和: A2= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n ...
- PAT 1012 数字分类 (20 分)(C语言)
题目 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n ...
- 1012 数字分类 (20 分)(c语言)
给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2 = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n ...
- 极简代码:1012 数字分类 (20分)
立志用更少的代码做更高效的表达 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A1 = 能被 5 整除的数字中所有偶数的和: A2= 将被 5 除后余 1 的数字按给出顺序进行 ...
最新文章
- pythontkinter真实的例子_python小实例——tkinter实战(计算器)
- 使用OpenCV4实现硬件级别加速
- 微型计算机技术 第三章,微型计算机技术第三章部分答案概要.docx
- 《Science》刊登中科院最新突破,用二氧化碳合成淀粉,网友已开始安排诺贝尔奖...
- 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google
- list修改元素的值_第115天:Python 到底是值传递还是引用传递
- ubuntu修改启动为文本模式
- Android__Context
- hashmap移除元素_Java HashMap 如何正确遍历并删除元素的方法小结
- 让开发人员变平庸的八个习惯,看看你中了几条
- CRC32(Cyclic Redundancy Check)循环冗余校验:推导
- python和ui设计哪个更好_Python主流IDE对比:Eric VS. PyCharm
- 平板电脑怎么投屏到电视上_笔记本电脑可以投屏到电视吗?电脑投屏电视,体验大屏乐趣...
- python控制小爱同学_小爱同学控制电脑开机 - IT客栈
- bzoj3332: 旧试题
- gwas snp 和_【交流】关于SNP与GWAS(Genome Wide Association study)的一些想法
- 《二十世纪西方思想文化潮流》笔记--导论5--理性的后果1
- Python进阶(九) -- 操作excel文件
- 876. 链表的中间结点【我亦无他唯手熟尔】
- 软件工程第一次团队作业