题目链接:点击打开链接
题目大意:略。
解题思路:
1、题目很单纯认为一年(一岁)就是yyyy相差1即可。无需考虑闰年/平年。
2、日期比较 y*10000 + m*100 + d 小技巧。
3、注意:合理数为 0 的情况,由于名字输出空,所以报的是 PE,而不是 WA。
AC 代码
#include<bits/stdc++.h>
#include<cmath>
#define mem(a,b) memset(a,b,sizeof a);
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int main()
{
const int MAX=20140906,MIN=18140906;
int n,mi=INF,ma=-1,y,m,d,rs,cnt=0; scanf("%d",&n);
string s1,s2;
char s[10];
for(int i=0;i<n;i++)
{
scanf("%s%d/%d/%d",s,&y,&m,&d);
rs=y*10000+m*100+d;
if(!(rs>MAX || rs<MIN))
{
cnt++;
if(rs>ma) ma=rs,s1=s;
if(rs<mi) mi=rs,s2=s;
}
}
if(cnt==0) puts("0");
else printf("%d %s %s\n",cnt,s2.c_str(),s1.c_str());
return 0;
}