PAT B1012 数字分类

PAT B1012 数字分类

题目描述:

  给定一系列正整数,请按要求对数字进行分类,并输出以下 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

参考代码:

 1 /***********************************************
 2 PAT B1012 数字分类
 3 ***********************************************/
 4 #include <iostream>
 5 #include <vector>
 6 
 7 using namespace std;
 8 
 9 int main() {
10     vector<vector<double> > ansList(5, { 0, 0 });
11     //double[0]表示想要的结果或者中间值;
12     //double[1]用来标记辅助信息:是否出现、出现个数、加减符号
13 
14     int temp = 0;
15     cin >> temp;   //数字的个数信息可以忽略
16     while (cin >> temp) {
17         switch (temp % 5) {
18         case 0:
19             if (temp % 10 == 0) {
20                 ansList[0][0] += temp;
21                 ansList[0][1]++;
22             }
23             break;
24         case 1:
25             if (int(ansList[1][1]) % 2 == 0)
26                 ansList[1][0] += temp;
27             else
28                 ansList[1][0] -= temp;
29 
30             ansList[1][1]++;
31             break;
32         case 2:
33             ansList[2][0]++;
34             ansList[2][1]++;
35             break;
36         case 3:
37             ansList[3][0] += temp;
38             ansList[3][1]++;
39             break;
40         case 4:
41             if (temp > ansList[4][0]) ansList[4][0] = temp;
42             ansList[4][1]++;
43             break;
44         default:
45             break;
46         }
47     }
48 
49     ansList[3][0] = int((ansList[3][0] / ansList[3][1]) * 10 + 0.5) / 10.0;
50 
51     for (int i = 0; i < 5; ++i) {
52         if (ansList[i][1] == 0)
53             cout << 'N';
54         else
55             cout << ansList[i][0];
56         if (i != 4) cout << ' ';
57     }
58 
59     return 0;
60 }
View Code

注意事项:

  1:最终的结果中有需要保留一位小数的,因此用double类型存储。

  2:vector容器不存在vector<typename, typename>、vector<typename1, typename2...>的用法。

猜你喜欢

转载自www.cnblogs.com/mrdragon/p/11386514.html