PAT-B] 1012. 数字分类 [模拟]

链接:1012. 数字分类 (20)

题意

给一个N表示接下来要操作的数字的个数
然后给出一串数字,按 $A_1$, $A_2$, $A_3$, $A_4$, $A_5$ 的要求分别算就好了。

分析

可以输入一个数计算一个,然后分别存到 $A_1$, $A_2$, $A_3$, $A_4$, $A_5$ 中去。

要注意如果 $A_i$ 中存在没被用到的,则需做好记录。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <cstdio>
int f[6]={ 0, 0, 0, 0, 0, 0 }; // 表示 Ai 内是否有数
double A[6]={ 0, 0, 0, 0, 0, 0 }; // 存放 Ai 结果
int main()
{
int N, n, t = 1, j = 0;
// t 为 A2 中数字前系数,+1 -1 +1 -1 ……
// j 为 A3 中数字的个数,方便求平均数
scanf( "%d", &N );
for( int i = 0; i < N; i++ ){
scanf( "%d", &n );
int y = n % 5;
if( n % 10 == 0 ){ // A1
A[1] += n;
f[1] = 1;
}
else if( y == 1 ){ // A2
A[2] += t * n;
t = -t;
f[2] = 1;
}
else if( y == 2 ){ // A3
A[3]++;
f[3] = 1;
}
else if( y == 3 ){ // A4
A[4] += n;
j++;
f[4] = 1;
}
else if( y == 4 ){ // A5
if( n > A[5] ){
A[5] = n;
}
f[5] = 1;
}
}
if( f[1] ) printf( "%.0lf", A[1] );
else printf( "N" );
if( f[2] ) printf( " %.0lf", A[2] );
else printf( " N" );
if( f[3] ) printf( " %.0lf", A[3] );
else printf( " N" );
if( j ) A[4] = A[4] / j;
if( f[4] ) printf( " %.1lf", A[4] );
else printf( " N" );
if( f[5] ) printf( " %.0lf\n", A[5] );
else printf( " N\n" );
return 0;
}

小结

注意一下细节部分就没有问题啦。