zoukankan      html  css  js  c++  java
  • PAT 乙级 1012 数字分类 (20) C++版

    1012. 数字分类 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

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

    难点:处理不存在的情况,定义一个标志量来标志这种类型的数是否存在,从而用对应的输出,如果用结果0来衡量是不行的,因为A2中特殊的情况就是两个数相等,结果也是为0

     1 // 1012.cpp : 定义控制台应用程序的入口点。
     2 //
     3 
     4 #include "stdafx.h"
     5 #include<iostream>
     6 #include<iomanip>
     7 #include<typeinfo>
     8 
     9 using namespace std;
    10 
    11 int main()
    12 {
    13     int N, A[5] = { 0 }, j = 1, num = 0, max = 0, dig[5] = { 0 };
    14 
    15     cin >> N;
    16 
    17     int *p = new int[N];
    18 
    19     for (int i = 0; i < N; i++)
    20     {
    21         cin >> p[i];
    22 
    23         switch (p[i] % 5)
    24         {
    25         case 0:
    26             if ((p[i] & 1) == 0)
    27             {
    28                 A[0] += p[i];
    29                 dig[0] = 1;
    30             }
    31             break;
    32         case 1:
    33             A[1] += p[i] * j;
    34             j = -j;
    35             dig[1] = 1;
    36             break;
    37         case 2:
    38             A[2]++;
    39             dig[2] = 1;
    40             break;
    41         case 3:
    42             A[3] += p[i];
    43             num++;
    44             dig[3] = 1;
    45             break;
    46         case 4:
    47             if (p[i] > max)
    48                 max = p[i];
    49             dig[4] = 1;
    50             break;
    51         default:break;
    52         }
    53     }
    54 
    55     A[4] = max;
    56 
    57     for (int i = 0; i < 5; i++)
    58     {
    59         if (dig[i])
    60         {
    61             if (i != 3)
    62                 cout << A[i];
    63             else
    64                 cout << fixed << setprecision(1) << static_cast<double>(A[3]) / num;
    65         }
    66         else
    67             cout << "N";
    68 
    69         if (i != 4)
    70             cout << " ";
    71     }
    72 
    73     delete[] p;
    74 
    75     return 0;
    76 }
  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/cdp1591652208/p/7146246.html
Copyright © 2011-2022 走看看