1028 人口普查 (20 分)

简介: 1028 人口普查 (20 分)

某城镇进行人口普查,得到了全体居民的生日。现请你写个程序,找出镇上最年长和最年轻的人。


这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 200 岁的老人,而今天是 2014 年 9 月 6 日,所以超过 200 岁的生日和未出生的生日都是不合理的,应该被过滤掉。

输入格式:

输入在第一行给出正整数 N,取值在(0,105];随后 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

 

 

在提交时发生了一件神奇的事情,有时候提交部分正确,有时提交完全正确。//测试用例应该是会变的。

 

#include<iostream>
#include<string>
using namespace std;
class birth {
public:
  int year;
  int month;
  int day;
  bool isbirth() {
    return ((year < 2014 || (year == 2014 && month < 9) || (year == 2014 && month == 9 && day <= 6)) &&
      (year > 1814 || (year == 1814 && month > 9) || (year == 1814 && month == 9 && day >= 6)));
  }
  bool operator>(birth b2) {
    return  (year > b2.year || (year == b2.year && month > b2.month) || (year == b2.year && month == b2.month && day > b2.day));
  }
};
class person {
public:
  birth birthday;
  string name;
};
int main()
{
  int N;
  person young;
  young.birthday.year = 2020;
  person old;
  int count=0;
  cin >> N;
  person tmp;
  for (int i = 0; i < N; i++) {
    cin >> tmp.name;
    scanf("%d/%d/%d", &tmp.birthday.year, &tmp.birthday.month, &tmp.birthday.day);
    if (tmp.birthday.isbirth()) {
      count++;
      if (tmp.birthday > old.birthday)
        old = tmp;
      if (young.birthday > tmp.birthday ) 
        young= tmp;
    }
  }
  cout << count;
  if (count != 0) {
    cout << " " << young.name << " " << old.name;
  }
  return 0;
}

想了一下,做了一点修改,当把第一个合法的人给young 和old,(因为这时只有一个人,他同时是最年轻和最老的)

#include<iostream>
#include<string>
using namespace std;
class birth {
public:
  int year;
  int month;
  int day;
  bool isbirth() {
    return ((year < 2014 || (year == 2014 && month < 9) || (year == 2014 && month == 9 && day <= 6)) &&
      (year > 1814 || (year == 1814 && month > 9) || (year == 1814 && month == 9 && day >= 6)));
  }
  bool operator>(birth b2) {
    return  (year > b2.year || (year == b2.year && month > b2.month) || (year == b2.year && month == b2.month && day > b2.day));
  }
};
class person {
public:
  birth birthday;
  string name;
};
int main()
{
  int N;
  person young;
  person old;
  int count=0;
  cin >> N;
  person tmp;
  for (int i = 0; i < N; i++) {
    cin >> tmp.name;
    scanf("%d/%d/%d", &tmp.birthday.year, &tmp.birthday.month, &tmp.birthday.day);
    if (tmp.birthday.isbirth()) {
      if (count == 0) {  
        old = tmp;
        young = tmp;
      }
      count++;
      if (tmp.birthday > old.birthday)
        old = tmp;
      if (young.birthday > tmp.birthday ) 
        young= tmp;
    }
  }
  cout << count;
  if (count != 0) {
    cout << " " << young.name << " " << old.name;
  }
  return 0;
}
相关文章
halcon如何判断HObject/HTuple为空
halcon如何判断HObject/HTuple为空
2280 0
|
XML 编解码 前端开发
CSS语言的基本内容
CSS语言的基本内容
|
6月前
|
数据挖掘 BI
|
7月前
|
Linux iOS开发 MacOS
CrossOver 25.0.1 for macOS & Linux - 领先的 Wine 解决方案
CrossOver 25.0.1 for macOS & Linux - 领先的 Wine 解决方案
186 0
|
域名解析 存储 缓存
域名解析 DNS:连接数字世界的关键枢纽
在数字世界中,DNS(域名解析系统)如同一位至关重要的引路人,将我们输入的域名与对应的IP地址相连,使我们可以轻松访问各种网站和服务。它通过多级服务器查询,将易于记忆的域名转换为复杂的IP地址,极大提升了互联网的易用性和普及度。尽管面临网络延迟和域名数量激增等挑战,通过分布式系统和缓存技术等创新方案,DNS 系统将持续发展,为用户提供更安全、高效的网络体验。
259 2
|
安全 网络安全 数据安全/隐私保护
[flask]使用mTLS双向加密认证http通信
[flask]使用mTLS双向加密认证http通信
305 0
|
Rust 编译器 Linux
【Rust】——rust前言与安装rust
【Rust】——rust前言与安装rust
【Rust】——rust前言与安装rust
|
机器学习/深度学习 数据采集 算法
|
机器学习/深度学习 自然语言处理 安全
拥抱变革:我的云计算技术感悟之旅探索机器学习中的自然语言处理技术
【5月更文挑战第29天】 在信息技术不断演进的今天,云计算作为一项革命性的技术,正引领着整个行业的未来。本文通过分享个人的技术感悟,探讨了云计算如何影响现代技术生态,以及它对技术专业人士所带来的挑战与机遇。文章基于实际案例和经验,阐述了从传统IT架构向云服务的转型过程中所面临的技术难题,并提出了解决策略。同时,展望了云计算未来的发展趋势及其对技术从业者的影响。
|
机器学习/深度学习 人工智能 安全
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
Python社区变天:可去除全局解释器锁GIL,真正多线程要来了
648 0