1012. 数字分类 (20)
时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一系列正整数,请按要求对数字进行分类,并输出以下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
难点:处理不存在的情况,定义一个标志量来标志这种类型的数是否存在,从而用对应的输出,如果用结果0来衡量是不行的,因为A2中特殊的情况就是两个数相等,结果也是为0
1 // 1012.cpp : 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 #include<iostream> 6 #include<iomanip> 7 #include<typeinfo> 8 9 using namespace std; 10 11 int main() 12 { 13 int N, A[5] = { 0 }, j = 1, num = 0, max = 0, dig[5] = { 0 }; 14 15 cin >> N; 16 17 int *p = new int[N]; 18 19 for (int i = 0; i < N; i++) 20 { 21 cin >> p[i]; 22 23 switch (p[i] % 5) 24 { 25 case 0: 26 if ((p[i] & 1) == 0) 27 { 28 A[0] += p[i]; 29 dig[0] = 1; 30 } 31 break; 32 case 1: 33 A[1] += p[i] * j; 34 j = -j; 35 dig[1] = 1; 36 break; 37 case 2: 38 A[2]++; 39 dig[2] = 1; 40 break; 41 case 3: 42 A[3] += p[i]; 43 num++; 44 dig[3] = 1; 45 break; 46 case 4: 47 if (p[i] > max) 48 max = p[i]; 49 dig[4] = 1; 50 break; 51 default:break; 52 } 53 } 54 55 A[4] = max; 56 57 for (int i = 0; i < 5; i++) 58 { 59 if (dig[i]) 60 { 61 if (i != 3) 62 cout << A[i]; 63 else 64 cout << fixed << setprecision(1) << static_cast<double>(A[3]) / num; 65 } 66 else 67 cout << "N"; 68 69 if (i != 4) 70 cout << " "; 71 } 72 73 delete[] p; 74 75 return 0; 76 }