1012 数字分类 (20 分)

Posted ygjojo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1012 数字分类 (20 分)相关的知识,希望对你有一定的参考价值。

1012 数字分类 (20 分)
 

给定一系列正整数,请按要求对数字进行分类,并输出以下 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 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 using namespace std;
 7 int main()
 8 {
 9     int n,a[1001];
10     cin>>n;
11     int num[5][1000];
12     int f[5]={0},s[5]={0};
13     double s3;
14 
15     for(int i=0;i<n;i++)
16     {
17         cin>>a[i];
18         int x=a[i]%5;
19         switch(x)
20         {
21             case 0:
22             if(a[i]%2==0)
23                 num[0][f[0]++]=a[i];
24                 break;
25             case 1:
26                 num[1][f[1]++]=a[i];
27                 break;
28             case 2:
29                 num[2][f[2]++]=a[i];
30                 break;
31             case 3:
32                 num[3][f[3]++]=a[i];
33                 break;
34             case 4:
35                 num[4][f[4]++]=a[i];
36                 break;
37         }
38 
39     }
40 
41     for(int i=0;i<f[0];i++)
42     {
43         s[0]+=num[0][i];
44     }
45     if(f[0]!=0)
46         cout<<s[0]<< ;
47     else
48         cout<<"N ";
49     for(int i=0;i<f[1];i++)
50     {
51         s[1]+=pow(-1,i)*num[1][i];
52     }
53     if(f[1]!=0)
54         cout<<s[1]<< ;
55     else
56         cout<<"N ";
57     s[2]=f[2];
58     if(f[2]!=0)
59         cout<<s[2]<< ;
60     else
61         cout<<"N ";
62     for(int i=0;i<f[3];i++)
63     {
64         s[3]+=num[3][i];
65     }
66     s3=(double)s[3]/f[3];
67     if(f[3]!=0)
68         printf("%.1f ",s3);
69     else
70         cout<<"N ";
71     for(int k=1;k<f[4];k++)
72     {
73         if(num[4][k]>num[4][0])
74             num[4][0]=num[4][k];
75     }
76     s[4]=num[4][0];
77     if(f[4]!=0)
78         cout<<s[4];
79     else
80         cout<<N;
81 }

 

以上是关于1012 数字分类 (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

1012 数字分类 (20 分)

1012 数字分类 (20 分)

PAT乙级1012 数字分类 (20 分)

PATB1012 数字分类(20 分)

1012 数字分类

PAT乙级 1012. 数字分类 (20)