zoukankan      html  css  js  c++  java
  • [C++]PAT乙级1012.数字分类 (20/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.依次录入数据
                1.1 根据模数值,判断用例数组元素属于哪一类数据
                1.2 根据分类标准,预处理分类数据
            2.按照规定格式输出.
    
        注意:
            边界条件是细节,例如:对A2计数:判断是否有A2的元素,避免求和结果为0时,引起歧义。
    */
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int size;
        int tmp, mod, A2_count = 0,A2_prev = 1, A4_count = 0;//tmp:临时存储原始数据元素;A2_prev:对上一A2元素的正负号标记,默认为+,1:+,-1:-;A3_count:对A3 的元素个数计数
        int A1 = 0, A2 = 0, A3 = 0, A5 = -1;//A5:存储被5除后余4的数字中最大数字
        double A4 = 0;//A4:存储元素之和,最后求平均数
        scanf("%d", &size);
        while(size--){
            scanf("%d", &tmp);
            mod = tmp % 5;
            if(mod == 0){
                if(tmp % 2 == 0){
                    A1 += tmp;//A1:能被5整除的数字中所有偶数的和
                }
            }else if(mod == 1){//A2:将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
                A2 += A2_prev * tmp;
                A2_prev *= -1;
                A2_count++;//注意:对A2计数原因:判断是否有A2的元素,避免求和结果为0时,引起歧义。
            } else if(mod == 2) {//A3:被5除后余2的数字的个数;
                A3++;
            } else if(mod == 3){//A4:被5除后余3的数字的平均数,精确到小数点后1位;
                A4 += tmp;//累计求和
                A4_count++;//计数
            } else {//A5:被5除后余4的数字中最大数字。
                A5 = tmp > A5 ? tmp : A5;
            }
        }
    
        if(A1 != 0){
            printf("%d ", A1);
        } else {
            printf("%s ", "N");
        }
        if(A2_count != 0){
            printf("%d ", A2);
        } else {
            printf("%s ", "N");
        }
        if(A3 != 0){
            printf("%d ", A3);
        } else {
            printf("%s ", "N");
        }
        if(A4 != 0){
            printf("%.1f ", A4 / A4_count);
        } else {
            printf("%s ", "N");
        }
        if(A5 != -1){
            printf("%d", A5);
        } else {
            printf("%s", "N");
        }
    //    printf("%d %d %d %.1f %d", A1, A2, A3, A4 / A4_count, A5);//test
    
        return 0;
    }
    

      

  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/8948379.html
Copyright © 2011-2022 走看看