zoukankan      html  css  js  c++  java
  • 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

     
  • 相关阅读:
    POJ 2236 Wireless Network(并查集)
    POJ 2010 Moo University
    POJ 3614 Sunscreen(贪心,区间单点匹配)
    POJ 2184 Cow Exhibition(背包)
    POJ 1631 Bridging signals(LIS的等价表述)
    POJ 3181 Dollar Dayz(递推,两个long long)
    POJ 3046 Ant Counting(递推,和号优化)
    POJ 3280 Cheapest Palindrome(区间dp)
    POJ 3616 Milking Time(dp)
    POJ 2385 Apple Catching(01背包)
  • 原文地址:https://www.cnblogs.com/oaoa/p/10664421.html
Copyright © 2011-2022 走看看