题目描述
给定 n 个人的出生日期,请找出其中年龄最大的,并输出他的出生日期。
输入格式
第一行:单个整数 n;
第二行到第n+1行:每行格式如下:
- 首先有一个四位数 y 表示年份;
- 接下来有一个两位数 m 表示月份;
- 最后有一个两位数 d 表示日期;
- 年月日之间以一个减号
-
隔开。
输出格式
一行字符串:表示最早的出生日期,格式同输入。
数据范围
- 对于 50%50%的数据,1≤n≤1,000;
- 对于 100%100%的数据,1≤n≤1,000,000;
- 1900≤y≤2020;
- 保证月份和日期都是两位数且是合理的日期。
样例数据
输入:
4
2008-08-08
1953-06-15
1949-10-01
1926-08-18
输出:
1926-08-18
本题关键点:
1.
字符串输入,根据'-'截取年月日,并转换成整数。
2.在相同年的情况下分别比较月和日。
代码如下。
#include <iostream>
#include <string>
using namespace std;
int main(){
int n,y,m,d,year,month,date;
string s;
cin>>n;
y=2020;
m=12;
d=31;
for(int i=0;i<n;i++){
cin>>s;
year=(s[0]-'0')*1000+(s[1]-'0')*100+(s[2]-'0')*10+(s[3]-'0');
month=(s[5]-'0')*10+(s[6]-'0');
date=(s[8]-'0')*10+(s[9]-'0');
if(year<y){
y=year;
m=month;
d=date;
}if(year==y){
if(month<m){
m=month;
d=date;
}else if(month==m){
if(date<d)
d=date;
}
}
}
cout<<y<<"-";
if(m<10){
cout<<"0"<<m<<"-";
}else{
cout<<m<<"-";
}
if(d<10){
cout<<"0"<<d;
}else{
cout<<d;
}
cout<<endl;
return 0;
}