1012 数字分类

一、题目

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

  • A1=A_1=A1​= 能被 5 整除的数字中所有偶数的和;
  • A2=A_2=A2​= 将被 5 除后余 1 的数字按给出顺序进行交错求和,即计算 n1−n2+n3−n4⋅⋅⋅⋅n_1-n_2+n_3-n_4 \cdot \cdot \cdot\cdotn1​−n2​+n3​−n4​⋅⋅⋅⋅;
  • A3=A_3=A3​= 被 5 除后余 2 的数字的个数;
  • A4=A_4=A4​= 被 5 除后余 3 的数字的平均数,精确到小数点后 1 位;
  • A5=A_5=A5​= 被 5 除后余 4 的数字中最大数字。

二、输入输出

输入格式

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

输出格式

对给定的 NNN 个正整数,按题目要求计算 A1A_1A1​ ~ A5A_5A5​ 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出 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

四、题目分析

读入数据根据对5取余的结果分类处理,每一类都需要记录数据个数,最后如果数量为0输出N,非零则根据要求计算。

五、代码

#include <bits/stdc++.h>
using namespace std;
int main()
{int n;cin >> n;int num;int count_0 = 0;int sum_0 = 0;int flag_1 = 1;int count_1 = 0;int sum_1 = 0;int count_2 = 0;int sum_3 = 0;int count_3 = 0;int count_4 = 0;int max_4 = 0;for (int i = 0; i < n; i++){cin >> num;switch (num % 5){case 0:if (num % 2 == 0){sum_0 += num;count_0++;}break;case 1:{sum_1 += flag_1 * num;flag_1 = -flag_1;count_1++;}break;case 2:count_2++;break;case 3:{sum_3 += num;count_3++;}break;case 4:{if (max_4 < num)max_4 = num;count_4++;}break;}}cout << setiosflags(ios::fixed) << setprecision(1);count_0 ? cout << sum_0 : cout << 'N';cout << ' ';count_1 ? cout << sum_1 : cout << 'N';cout << ' ';count_2 ? cout << count_2 : cout << 'N';cout << ' ';count_3 ? cout << (double)sum_3 / count_3 : cout << 'N';cout << ' ';count_4 ? cout << max_4 : cout << 'N';return 0;
}

六、总结

  • 三目条件运算符中的类型转换:
    对于本题的输出:

    count_0 ? cout << sum_0 : cout << 'N';
    

    如果写成:

    cout << (count ? sum_0 : 'N');
    

    条件运算符的第二操作数是整型,第三操作数是字符型,如果count为0,输出的不是N,而是78('N’的ASCII码值),第三被隐式类型转换为第二操作数相同的类型。

  • switch语句(一般使用if-else较多,switch记得写break)

    switch (expression)
    {case /* constant-expression */:/* code */break;default:break;
    }
    
  • 控制浮点数精度的流操纵算子
    对于保留固定小数位数的输出,采取定点输出:、

    cout << setiosflags(ios::fixed) << setprecision(1);
    

    setiosflags(ios::fixed)表示定点输出;setprescision(n)表示保留n位小数。
    取消定点输出需要使用resetiosflags(ios::fixed)流操作算子。
    相比于流输出,对于格式控制printf更方便一些。

PAT (Basic Level) Practice1012 数字分类相关推荐

  1. PAT (Basic Level) Practice1019 数字黑洞

    1019 数字黑洞 一.题目 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字.一直重复这样 ...

  2. 1048 数字加密【PAT (Basic Level) Practice (中文)】

    1048 数字加密[PAT (Basic Level) Practice (中文)] 原题链接:1048 数字加密 (pintia.cn) 1.前言 PAT(乙级)2015年冬季考试 第三题 分数: ...

  3. 【题解】PAT (Basic Level) Practice (中文)

    互联网行业的小白,写博客的目的是为了记录自己的学习过程.对自己学习中所犯的错误做一个总结.由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! PAT Basic Level P ...

  4. PAT basic level 答案+解题思路+难点 (个人刷题记录)

    PAT basic level 使用语言:C++ 仅记录一下自己刷题过程的心得体会 永远保持更新(期待更好的解法) 可能有些题没有(那就是我还没做出来,以后会更的!) 欢迎大家与我讨论交流√ 题目序列 ...

  5. PAT (Basic Level) Practice (中文)1058 选择题 (20 分)

    PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 文章目录 PAT (Basic Level) Practice (中文)1058 选择题 (20 分) 题 ...

  6. PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642

    PAT (Basic Level) Practice (中文)1070 结绳 (25 分) 凌宸1642 题目描述 给定一段一段的绳子,你需要把它们串成一条绳.每次串连的时候,是把两段绳子对折,再如下 ...

  7. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  8. PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)

    PAT (Basic Level) Practise (中文)-1034. 有理数四则运算(20)  http://www.patest.cn/contests/pat-b-practise/1034 ...

  9. 可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决)

    可优化-PAT (Basic Level) Practice Python解法 1026 程序运行时间(时间进位/四舍五入Tobe解决) c1, c2 = map(int,input().split( ...

最新文章

  1. 程序员:请你不要对业务「置之不理」
  2. LeetCode: Flatten Binary Tree to Linked List
  3. Verilog中可综合与不可综合的语句
  4. Python 的函数
  5. 优化SQL Server的内存占用之执行缓存
  6. $.get、$.post 和 $().load()
  7. 这三道题,总有一道你是答不出来的
  8. 7-1 装载问题 (10 分)(思路+详解)
  9. C# datetime 格式化
  10. 浏览器与WEB服务器交互
  11. Unity3d大会的部分总结
  12. windows安装docker后启动报错无法下载镜像文件Error with pre-create check: “Get https://github-production-release-ass
  13. Linux,vi编辑器使用手册
  14. 支持哪些格式的图标_免费矢量图标素材资源网站,您一定会有需要(建议收藏)...
  15. 设计模式之设计原则(一)
  16. VScode运行MATLAB
  17. 【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第五节 窗体文字材质设置
  18. Java常用命令:jps、jstack、jmap、jstat(带有实例教程)
  19. 当我们在聊「开源大数据调度系统Taier」的数据开发功能时,到底在讨论什么?
  20. 使用nginx模拟反向代理

热门文章

  1. SpringBoot之第一个Restfu示例
  2. C++之导入lib库
  3. WordPress搬家插件迁移网站的方法(从一台服务器搬到另一台服务器)
  4. mysql 查看内核版本命令_Linux查看版本命令问题
  5. 陀螺仪数据转换成角度_请教怎么把用陀螺仪积分得到的角度转换到大地坐标系下?...
  6. linux 路由跟踪命令_一文掌握linux系统路由跟踪指令traceroute
  7. IDEA插件: 一键自动部署jar到远程服务器 使用 Cloud Toolkit 来部署应用到腾讯云、阿里云服务器
  8. linux鼠标改为自动聚焦,如何在Linux上取消聚焦(模糊)Pythongi GTK+3窗口
  9. java对象赋值优雅写法_看看人家写的API,那才叫优雅!
  10. python jieba库分词_Python基于jieba库进行简单分词及词云功能实现方法