题目链接:点击打开链接
题目大意:略。
解题思路:
题目很单纯认为一年(一岁)就是yyyy相差1即可。无需考虑闰年/平年。
日期比较 y*10000 + m*100 + d 小技巧。
注意:合理数为 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; }