1012 数字分类

1012 数字分类 (20分)
 

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

 

    题目较简单,注意A2的分类情况即可,看代码

 1 #include<iostream>
 2 #include<iomanip>
 3 #include<vector>
 4 using namespace std;
 5 int main () 
 6 {
 7    int N,A1=0,A2=0,A3=0,A5=0;
 8    double A4=0.0;
 9    cin>>N;
10    vector<int> v(N);
11    for(int i=0;i<N;i++)
12        cin>>v[i];
13    int countA2=0,countA4=0,k=-1;
14    for(int i=0;i<N;i++)
15    {
16        if(v[i]%5==0&&v[i]%2==0)
17            A1+=v[i];
18        else if(v[i]%5==1)
19        {
20            k*=-1;
21            A2+=k*v[i];
22            countA2++;
23        }
24        else if(v[i]%5==2)
25            A3++;
26        else if(v[i]%5==3)
27        {
28            A4+=v[i];
29            countA4++;
30        }
31        else if(v[i]%5==4&&v[i]>A5)
32            A5=v[i];
33    }
34    A4=A4/countA4;  //计算A4
35    if(A1>0)
36        cout<<A1<<" ";
37    else
38        cout<<"N ";
39    if(countA2>0)
40        cout<<A2<<" ";
41    else
42        cout<<"N ";
43    if(A3>0)
44        cout<<A3<<" ";
45    else
46        cout<<"N ";
47    if(A4>0.0)
48        cout<<setiosflags(ios::fixed)<<setprecision(1)<<A4<<" ";
49    else
50        cout<<"N ";
51    if(A5>0)
52        cout<<A5;
53    else
54        cout<<"N";
55    return 0;
56 }

ac了

 

posted @ 2020-05-01 10:05  和运气碰碰  阅读(251)  评论(0编辑  收藏  举报