数字分类

题目描述

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


C语言版:

#include<stdio.h>
int main(void){
    double arr[5] = {0, 0, 0, 0, 0};
    int num;
    scanf("%d", &num);
    int val;
    int pm = 1;
    int n = 0;
    for(int i=0; i<num; i++){
        scanf("%d", &val);
        switch(val % 5){
            case 0:
                if(val % 2 ==0){
                    arr[0] += val;
                }
            break;
            case 1:
                arr[1] += pm * val;
                pm *= -1;
            break;
            case 2:
                arr[2]++;
            break;
            case 3:
                arr[3] += val;
                n++;
            break;
            case 4:
                if(val > arr[4]){
                    arr[4] = val;
                }
            break;
        }
    }
    for(int j=0; j<4; j++){
        if(arr[j] == 0){
            printf("N ");
        }
        else if(j == 3){
            arr[j] = arr[j] / n;
            printf("%0.1f ", arr[j]);
        }
        else{
            printf("%0.0f ", arr[j]);
        }
    }
    if(arr[4] == 0){
        printf("N");
    }
    else{
        printf("%0.0f", arr[4]);
    }
    return 0;
}

注意:

  • 注意格式,PAT的大多数题都要求数字和数字之间用空格隔开,而最后一个数字的末尾是没有空格的。

C++版:

#include<iostream>
#include<iomanip>
using namespace std;
int main(void){
    double arr[5] = {0, 0, 0, 0, 0};
    int num;
    cin >> num;
    int val;
    int pm = 1;
    int n = 0;
    for(int i=0; i<num; i++){
        cin >> val;
        switch(val % 5){
            case 0:
                if(val %2 == 0){
                    arr[0] += val;
                }
            break;
            case 1:
                arr[1] += pm * val;
                pm *= -1;
            break;
            case 2:
                arr[2]++;
            break;
            case 3:
                arr[3] += val;
                n++;
            break;
            case 4:
                if(val > arr[4]){
                    arr[4] = val;
                }
            break;
        }
    }
    for(int j=0; j<4; j++){
        if(arr[j] == 0){
            cout << "N ";
        }
        else if(j == 3){
                arr[j] = arr[j] / n;
                cout << setiosflags(ios::fixed) << setprecision(1) << arr[j] << " ";
            }
        else{
            cout << arr[j] << " ";
        }
    }
    if(arr[4] == 0){
            cout << "N";
        }
        else{
            cout << setprecision(0) << arr[4];
        }
}

注意:

  • 在一般的算法题中,C和C++基本没有区别,因为用不到“”这个概念(所以这里的C++只是把stdio里的方法换成iostream里的方法)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容