• 1012 数字分类


    给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字:

    • A​1​​ = 能被 5 整除的数字中所有偶数的和;
    • A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
    • A​3​​ = 被 5 除后余 2 的数字的个数;
    • A​4​​ = 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
    • A​5​​ = 被 5 除后余 4 的数字中最大数字。

    输入格式:

    每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。

    输出格式:

    对给定的 N 个正整数,按题目要求计算 A​1​​~A​5​​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。

    若其中某一类数字不存在,则在相应位置输出 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<iomanip>
     3 using namespace std;
     4 
     5 int main() {
     6     int n; //测试用例的个数
     7     int a[1000] = { 0 };  //存放输入的数据
     8     cin >> n; //输入正整数
     9     getchar();
    10     for (int i = 0; i < n-1; i++) {
    11         cin >> a[i];
    12         getchar();
    13     }
    14     cin >> a[n - 1];
    15 
    16     //计算A1
    17     int a1=0;
    18     for (int i = 0; i < n; i++) {
    19         if (a[i] % 5 == 0 && a[i]%2==0) {
    20             a1 += a[i];
    21         }
    22     }
    23 
    24     //计算A2
    25     int a2 = 0;
    26     int b = -1;
    27     int judge = 0;
    28     for (int i = 0; i < n; i++) {
    29         if (a[i] % 5 == 1) {
    30             b *= -1;
    31             a2 += b * a[i];
    32             judge++;
    33         }
    34     }
    35 
    36     //计算A3
    37     int cnt1 = 0;//计数器1
    38     int a3 = 0;
    39     for (int i = 0; i < n; i++) {
    40         if (a[i] % 5 == 2) {
    41             cnt1++;
    42         }
    43     }
    44     a3 = cnt1;
    45 
    46     //计算A4
    47     double a4 = 0;
    48     int cnt2 = 0; //计数器2
    49     for (int i = 0; i < n; i++) {
    50         if (a[i] % 5 == 3) {
    51             a4 += a[i];
    52             cnt2++;
    53         }
    54     }
    55     if (a4 > 0) {
    56         a4 /= cnt2;
    57     }
    58 
    59     //计算A5
    60     int max = 0;
    61     for (int i = 0; i < n; i++) {
    62         if (a[i] % 5 == 4) {
    63             if (a[i] >= max) {
    64                 max = a[i];
    65             }
    66         }
    67     }
    68 
    69     //输出
    70     if (a1 == 0) cout << "N" << ' ';
    71     else if (a1 > 0) cout << a1 << ' ';
    72 
    73     if (judge == 0)cout << "N" << ' '; //因为a2的结果可能是负,可能为正,也可能为0
    74     else cout << a2 << ' ';                //所以需要一个judge变量,来记录有没有出现除5余数为1的数
    75 
    76     if (a3 == 0) cout << "N" << ' ';
    77     else if (a3 > 0) cout << a3 << ' ';
    78 
    79     if (a4 == 0) cout << "N" << ' ';  //fixed可以保证是保留小数点后一位
    80     else if (a4 > 0) cout <<fixed<<setprecision(1)<< a4 << ' ';
    81      
    82     if (max == 0) cout << "N" ;
    83     else if (max > 0) cout << max ;
    84 
    85 
    86     return 0;
    87 }

    有关于输出的精度控制,如何指定保留几位小数,可以参考这篇文章:https://www.cnblogs.com/shikamaru/p/7830963.html

     
  • 相关阅读:
    整合Druid数据源
    SpringBoot与数据访问
    IDEA spirng boot @Autowired注解 mapper出现红色下划线解决方法
    IntelliJ Idea 常用快捷键列表
    docker 安装mysql示例
    设计模式都没用过,好意思出去面试?
    为什么 Java 线程没有 Running 状态?
    厉害了,淘宝千万并发,14 次架构演进…
    Redis 内存满了怎么办……
    Java 线程池 8 大拒绝策略,面试必问!
  • 原文地址:https://www.cnblogs.com/oaoa/p/10664421.html
Copyright © 2020-2023  润新知