【题目描述】

1100 校庆 (25 分)

2019 年浙江大学将要庆祝成立 122 周年。为了准备校庆,校友会收集了所有校友的身份证号。现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友。

输入格式:

输入在第一行给出不超过 105 的正整数 N,随后 N 行,每行给出一位校友的身份证号(18 位由数字和大写字母X组成的字符串)。题目保证身份证号不重复。

随后给出前来参加校庆的所有人士的信息:首先是一个不超过 105 的正整数 M,随后 M 行,每行给出一位人士的身份证号。题目保证身份证号不重复。

输出格式:

首先在第一行输出参加校庆的校友的人数。然后在第二行输出最年长的校友的身份证号 —— 注意身份证第 7-14 位给出的是 yyyymmdd 格式的生日。如果没有校友来,则在第二行输出最年长的来宾的身份证号。题目保证这样的校友或来宾必是唯一的。

输入样例:

5
372928196906118710
610481197806202213
440684198612150417
13072819571002001X
150702193604190912
6
530125197901260019
150702193604190912
220221196701020034
610481197806202213
440684198612150417
370205198709275042

输出样例:

3
150702193604190912

【题目分析】

为了判断有多少个校友来,必须先把所有校友的个人信息存储在容器中。因为要看是否存在,所以可以用unordered_set存储个人信息。

然后是要判断最年长者,根据题目要求,若temp(当前判断的人的身份证)和oldest_one(暂时最老的人的身份证)满足下列关系:

alumnus.count(temp)>=alumnus.count(oldest_one)&&temp.substr(6,8)<=oldest_one.substr(6,8) //alumnus是存储校友信息的无序集合

那么就说temp是有效的更老的人。

分析一下正确性,其实数据无外乎有三种情况,一是全部都是来宾,没有校友,二是全部都是校友,没有来宾,最后是既有校友又有来宾。

前面两种情况好分析,第三种其实也很简单的,alumnus.count(temp)>=alumnus.count(oldest_one)

这一个布尔表达式就决定了,来宾和校友比较的时候永远都是“更年轻的”,保证了答案的正确性。

【AC代码】

#include <iostream>
#include <unordered_set>
using namespace std;
unordered_set<string> alumnus;
int main(){int N = 0, ret = 0;string temp, oldest_one = "99999999";cin >> N;for (int i = 0; i < N;i++){cin >> temp;alumnus.insert(temp);}cin >> N;for (int i = 0; i < N;i++){cin >> temp;ret += (alumnus.count(temp));if(alumnus.count(temp)>=alumnus.count(oldest_one)&&temp.substr(6,8)<=oldest_one.substr(6,8)){oldest_one = temp;}}cout << ret << endl << oldest_one;return 0;
}

PAT 乙级 1100 校庆相关推荐

  1. pat basic 1100 校庆

    2019 年浙江大学将要庆祝成立 122 周年.为了准备校庆,校友会收集了所有校友的身份证号.现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友. 输入格式: 输入在第一行给出 ...

  2. PTA乙级 1100 校庆——25分

    2019 年浙江大学将要庆祝成立 122 周年.为了准备校庆,校友会收集了所有校友的身份证号.现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友. 输入格式: 输入在第一行给出 ...

  3. 「PAT乙级真题解析」Basic Level 1100 校庆 (问题分析+完整步骤+伪代码描述+提交通过代码)

    乙级的题目训练主要用来熟悉编程语言的语法和形成良好的编码习惯和编码规范.从小白开始逐步掌握用编程解决问题. PAT (Basic Level) Practice 1100 校庆 问题分析 题设给定了一 ...

  4. PAT乙级题目对应知识点分类梳理例程(更新至1102)

    PAT乙级题目对应知识点分类梳理 PAT乙级的90道题的知识点与对应的题号整理如下,便于做专项练习和巩固! 题型 备注 1.字符串函数 考察字符串相关知识,如逆转.字母与数字的判断与转化.字符串拼接. ...

  5. 【PTA】 PAT乙级真题,95题(C++,AC代码)

    PAT乙级真题95题 标号 标题 分数 通过数 提交数 通过率 1001 害死人不偿命的(3n+1)猜想 15 109558 309119 0.35 1002 写出这个数 20 71739 28156 ...

  6. Pat乙级 1049 数列的片段和

    Pat乙级 1049 数列的片段和 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/994805275792 ...

  7. Pat乙级 1045 快速排序

    Pat乙级 1045 快速排序 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/99480527858996 ...

  8. Pat乙级 1034 有理数四则运算

    Pat乙级 1034 有理数四则运算 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/99480528762 ...

  9. Pat乙级 1040 有几个PAT

    Pat乙级1040 有几个PAT 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/9948052823899 ...

最新文章

  1. Android系统中Parcelable和Serializable的区别
  2. 服务器支持最大连接数,Horizon 连接服务器最大连接数和配置
  3. Mysql 层级、执行顺序、执行计划分析
  4. Dynamics CRM 同一实体多个Form显示不同的Ribbon按钮
  5. eclipse 不能将maven jar包导入到tomcat中问题
  6. 计算机 教育 初中 论文范文1000字,初中作文1000字
  7. 用c语言赋值表示的例子,一起talk C栗子吧(第五回:C语言实例--数组巧妙赋值)...
  8. 简单记录阿里云语音识别API调用方法
  9. 国内外三维图形引擎研究现状
  10. AID Learning 0.87F3安装注意事项
  11. 猜词游戏之JavaScript实现
  12. 学习编程,应该从哪里开始学习呢?
  13. DSP之Controlsuit和C2000Ware下载安装
  14. 汉锐4K广播专业会议摄像机
  15. 统一依赖管理Composing builds
  16. [高考真题]2012年普通高等学校招生全国统一考试 英语(四川卷)
  17. Windows安装和使用
  18. windows下运行QT程序
  19. hadoop配置、运行错误总结
  20. 超级详细易懂的GhostNet解析

热门文章

  1. 对Request.parameter中参数进行添加或修改
  2. 阿里云服务器ECS 搭建网站
  3. 图层样式之:内发光、外发光
  4. move_base导航框架中recovery_behaviors
  5. ip地址大全_2020全球公共 DNS 服务器 IP 地址大全
  6. 51 nod 1625 夹克爷发红包【贪心、二进制枚举】
  7. 大学生学习摄影如何进行构图?
  8. wxPython控件大全
  9. 【机器人】工业机器人如何赋能3C制造升级?工业机器人的16项重要应用;工业机器人的11个知识问答,“业内人”必看!
  10. 第11章 菜单及其它资源