【PAT (Basic Level) 】1028 人口普查 (20 分)
某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。
【输入格式】:
输入在第一行给出正整数 N,取值在(0,10^5];随后 N 行,每行给出 1 个人的姓名(由不超过 5 个英文字母组成的字符串)、以及按 yyyy/mm/dd(即年/月/日)格式给出的生日。题目保证最年长和最年轻的人没有并列。
【输出格式】:
在一行中顺序输出有效生日的个数、最年长人和最年轻人的姓名,其间以空格分隔。
【输入样例】:
5
John 2001/05/12
Tom 1814/09/06
Ann 2121/01/30
James 1814/09/05
Steve 1967/11/20
【输出样例】:
3 Tom John
【注意点】:
- 注意先输出的是最年轻的还是最年长的
- 也有可能符合情况的生日是0个,所以最后只需要输出0,且0之后没有空格
- 我用的是把所有符合情况的放入结构体中,再写bool cmp函数,利用sort函数进行排序。
【AC代码】:
#pragma warning(disable:4996)#include <iostream>
#include <cstdio>
#include <string>
#include <algorithm>using namespace std;struct person
{string name;int year;int month;int day;
};person p[100005];bool cmp(person a, person b)
{if (a.year != b.year)return a.year > b.year;else{if (a.month != b.month)return a.month > b.month;elsereturn a.day > b.day;}
}int main()
{string name;person p1;int n, y, m, d;int t = 0;scanf("%d", &n);while (n--){cin >> name;scanf("%d/%d/%d", &y, &m, &d);if (y < 1814 || y > 2014 || (y == 1814 && m < 9) || (y == 1814 && m == 9 && d < 6) || (y == 2014 && m > 9) || (y == 2014 && m == 9 && d > 6))continue;p1.name = name;p1.day = d;p1.month = m;p1.year = y;p[t++] = p1;}printf("%d", t);if (t != 0){sort(p, p + t, cmp);cout << " " << p[t - 1].name << " " << p[0].name;}return 0;
}
【PAT (Basic Level) 】1028 人口普查 (20 分)相关推荐
- 【2020模拟考试T3】【PAT乙】1028 人口普查 (20分) 字符串比较
problem 1028 人口普查 (20分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇 ...
- 【PAT乙级】1028 人口普查 (20 分)
题目地址 #include<bits/stdc++.h> using namespace std; int ans; string small="99999999"; ...
- PAT乙级1028 人口普查 (20 分)
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
- 1028 人口普查 (20 分)C++ 示例代码
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
- C++学习之路 | PTA乙级—— 1028 人口普查 (20 分)(精简)
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
- 1028 人口普查 (20 分)测试点3格式错误
1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 2 ...
- PAT (Basic Level) Practice1028 人口普查
1028 人口普查 一.题目 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 ...
- PAT 1028 人口普查 (20 分)
题目描述: 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天 ...
- 1028 人口普查 (20 分)(c语言)
某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的--假设已知镇上没有超过 200 岁的老人,而今天是 2014 ...
最新文章
- mass Framework event模块 v4
- 大约 Apple Metal API 一些想法
- 日本CG大神又整活了!3D建模软件拿来搞面部实时捕捉,网友:效果好得有点吓人...
- Nginx 和 PHP的安装配置
- 织梦dede企业律师事务所网模板源码
- Visual Studio Code 1.44 发布
- 斗鱼第三方开放平台2.2版使用记录
- dpkg 被中断,您必须手工运行 sudo dpkg -configure -a 解决
- 印刷点阵字体_印刷术—类型族,分类和组合字体
- CIF/4CIF/QCIF/D1
- 2台计算机网线连接无法ping通,两台电脑PING不通怎么办?
- 离散数学_量词分配等值式
- Maven配置文件示例
- matlab计算复活节概率,复活节是几月几日_计算复活节日期_我爱历史网
- MTK6737 WCN省晶体问题
- 在Dreamweaver 中应用模板
- MogaFX—日元兑美元30多年来首次突破150日元
- there is no statement named xxx in this SqlMap
- Searchcode: 源代码搜索利器
- Qt实现中国象棋:(七)悔棋
热门文章
- 数据库系统DBS的特点
- ui设计的文字怎样提高设计感呢?
- 使用RabbitMQ做数据接收和处理时,自动关闭
- [Java实现] 图片择优(选择最清楚的图片)
- 玉山银行的一名新员工“玉山小i随身金融顾问”
- iOS开发几年了,你清楚OC中的这些东西么!!!?
- 第二阶段团队项目冲刺站立会议(九)
- Android5.1.1源码 - zygote fork出的子进程如何权限降级
- Vmware虚拟机的复制后无法使用的问题和解决
- Python库glob学习笔记