PAT Basic 1012

1012 数字分类 

给定一系列正整数,请按要求对数字进行分类,并输出以下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 #include<stdio.h>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     int N,m,A1 = 0,a1 = 0,A2 = 0, a2 = 0, sig = 1,A3 = 0, a3 = 0, num = 0, a4 = 0, A5 = 0, a5 = 0;
 9     double A4 = 0;
10     cin>>N;
11     while(N--)
12     {
13         cin>>m;
14         if( m%5 == 0)
15         {
16             if( m%2 == 0)
17             {
18                 if(!a1) a1 = 1;
19                 A1 += m;    
20             }     
21         }
22         else if( m%5 == 1) 
23         {
24             if(!a2) a2 = 1;
25             A2 += m*sig;
26             sig *= -1;
27         }
28         else if( m%5 == 2)
29         {
30             if(!a3) a3 = 1;
31             A3++;
32         }
33         else if( m%5 == 3)
34         {
35             if(!a4) a4 = 1;
36             A4 += m;
37             num++;
38         }
39         else if( m%5 == 4)
40         {
41             if(!a5) a5 = 1;
42             if( m > A5)
43                 A5 = m;
44         }
45     }
46     A4 = A4/num;
47     if(a1) printf("%d ",A1);
48     else printf("N ");
49     if(a2) printf("%d ",A2);
50     else printf("N ");
51     if(a3) printf("%d ",A3);
52     else printf("N ");
53     if(a4) printf("%.1lf ",A4);
54     else printf("N ");
55     if(a5) printf("%d",A5);
56     else printf("N");
57     return 0;
58 }
 

猜你喜欢

转载自www.cnblogs.com/yxp400/p/9448130.html