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

输入样例:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出样例:

30 11 2 9.7 9

输入样例:

8 1 2 4 5 6 7 9 16

输出样例:

N 11 2 N 9

解析

  让你根据不同条件把数字处理一下,首先条件都是 mod 5
  将数字存到s,for(i=0~4),对每个数满足s % 5 == i就保存到re,然后对re就是满足第i个条件的数
  注意每次for,k要置0,k是re的数组当前位置。   写的比较冗杂,先不改了叭😁

答案

#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
    double A[5] = {0};
    int s[1001],r[1001];
    int n;
    cin>>n;

    for(int  i = 0 ; i < n ; i++){
        cin>>s[i];
    }

    for(int i = 0 ; i < 5 ; i++){
        int k=0;
        for(int j = 0 ; j < n;j++){
            if(s[j]%5 == i){
                r[k++] = s[j];
            }
        }
        double sum = 0;
        switch (i){
            case 0:
                sum = 0;
                for(int i=0;i<k;i++){
                    if(r[i]%5 == 0 && r[i]%2 == 0){
                        sum+=r[i];
                    }
                }
                if(sum == 0){
                    A[0] = 6666;
                }else{
                    A[0] = sum;
                }
                break;
            case 1:
                sum = 0;
                for(int i=0;i<k;i++){
                    if(r[i]%5 == 1){
                        if(i%2 == 0){
                            sum+=r[i];
                        }else{
                            sum-=r[i];
                        }
                    }
                }
                if(k==0){
                    A[1] = 6666;
                }else{
                    A[1] = sum;
                }
                break;
            case 2:
                sum = 0;
                for(int i=0;i<k;i++){
                    if(r[i]%5 == 2){
                        sum++;
                    }
                }
                if(k==0){
                    A[2] = 6666;
                }else{
                    A[2] = sum;
                }
                break;
            case 3:
                sum = 0;
                for(int i=0;i<k;i++){
                    if(r[i]%5 == 3){
                       sum+=r[i];
                    }
                }
                if(k==0){
                    A[3] = 6666;
                }else{
                    A[3] = sum/k;
                }
                break;
            case 4:
                int max = 0;
                for(int i=0;i<k;i++){
                    if(r[i]%5 == 4){
                       if(r[i]>max){
                           max = r[i];
                       }
                    }
                }
                if(k==0){
                    A[4] = 6666;
                }else{
                    A[4] = max;
                }
                break;
        }
        
    }
    for(int i=0;i<5;i++){
        if(A[i] == 6666 ){
            cout<<"N";
        }else if(i == 3){
            printf("%.1f",A[i]);
        }
        else{
            cout<<A[i];
        }
        if(i<4){
            cout << " ";
        }
    }
}
posted @ 2020-08-04 21:05  小马小马最可爱  阅读(191)  评论(0)    收藏  举报