-
题目链接:数字分类 (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”。 -
输入例子:
13 1 2 3 4 5 6 7 8 9 10 20 16 18
-
输出例子:
30 11 2 9.7 9
-
满分代码
#include <iostream> #include <stdio.h> using namespace std; int main() { bool flag[6] = {false,false,false,false,false,false}; int a[6] = {0,0,0,0,0,0}; long t; int a2_t = 1; int a4_t = 0; int N; cin>>N; for(int i=0;i<N;i++) { cin>>t; int y = t%5; if(y==0 && t%2==0) flag[1] = true,a[1]+=t; else if(y==1) flag[2] = true,a[2]+=(t*a2_t),a2_t*=-1; else if(y==2) flag[3] = true,a[3]+=1; else if(y==3) flag[4] = true,a[4]+=t,a4_t+=1; else if(t>a[5]) flag[5] = true,a[5]=t; } for(int i=1;i<=5;i++) { if(!flag[i]) cout<<"N"; else { if(i==4) printf("%.1f",(double)a[4]/a4_t); else cout<<a[i]; } if(i!=5) cout<<" "; } cout<<endl; return 0; }
PAT乙级 —— 1002 数字分类 (20)
最新推荐文章于 2021-02-14 17:18:35 发布
本文详细介绍了一个数字分类算法,该算法能够处理一系列正整数,将其按照被5除后的余数特性进行分类,并计算特定条件下的和、平均数及最大值等统计信息。文章通过实例演示了如何使用C++实现这一算法,包括读取输入、处理数据和输出结果的全过程。
摘要由CSDN通过智能技术生成