给定一系列正整数,请按要求对数字进行分类,并输出以下 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
思路:
没啥思路...按要求分情况讨论,输出的时候也要判断数字是否存在。写的挺繁琐的,就基础小白的做法吧嘻嘻嘻
1 #include <iostream> 2 using namespace std; 3 int main() { 4 int n,sign=1; 5 int a[1001]; 6 int sum1=0, sum2=0,sum3=0, cnt1=0,cnt2=0, maxn=0; 7 double num; 8 int flag[5] = {0}; 9 cin >> n; 10 for (int i = 0; i < n; i++) { 11 cin >> a[i]; 12 switch (a[i] % 5) 13 { 14 case 0: 15 if (a[i] % 2 == 0) 16 { 17 sum1 += a[i]; 18 flag[0] = 1; 19 } 20 break; 21 case 1: 22 sum2 += sign*a[i]; 23 sign *= -1; 24 flag[1] = 1; 25 break; 26 case 2: 27 cnt1++; 28 flag[2] = 1; 29 break; 30 case 3: 31 sum3 += a[i]; 32 cnt2++; 33 flag[3] = 1; 34 break; 35 case 4: 36 if (a[i] > maxn) 37 maxn = a[i]; 38 flag[4] = 1; 39 break; 40 default: 41 break; 42 } 43 } 44 if (flag[0] ==1) 45 printf("%d ", sum1); 46 else printf("N "); 47 if(flag[1]==1) 48 printf("%d ", sum2); 49 else printf("N "); 50 if (flag[2]==1) 51 printf("%d ", cnt1); 52 else printf("N "); 53 if (flag[3]==1) { 54 num= (double)sum3 / cnt2;//类型转换才能得到double类型的商 55 printf("%.1f ", num); 56 } 57 else printf("N "); 58 if(flag[4]==1) 59 printf("%d", maxn); 60 else printf("N"); 61 return 0; 62 }