• 1012 数字分类 (20 分)


    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
    

    分析:
    这个题是真的累,已经做过一遍在做一遍还是错误连连,比较注意的一点应该是第三类数字是小数,但除数和被除数都是整数,总忘记转换类型。
     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 }
  • 相关阅读:
    wkhtmktopdf
    linux命令行抓取网页快照
    ubuntu 固定静态IP
    $http questions
    generate_scripts
    network
    IT_Qestion
    day03
    day02
    day01
  • 原文地址:https://www.cnblogs.com/ygjojo/p/10742264.html
Copyright © 2020-2023  润新知