合法日期
题目描述
判断一个日期在公历体系中是否真实存在。例如2000年2月31日就是不存在的。
输入格式
三个正整数 y y y, m m m, d d d, 代表年月日。
输出格式
如果存在输出"YES",如果不存在输出"NO"。
样例 #1
样例输入 #1
1966 8 5
样例输出 #1
YES
样例 #2
样例输入 #2
2020 13 1
样例输出 #2
NO
提示
输入的年月日都是正整数,均不大于3000。
答案
#include<bits/stdc++.h>
using namespace std;
int main(){
int y,m,d;
cin >> y >> m >> d;
if (y<=0 or m<=0 or d<=0){
cout << "NO";
}
else if (m > 12){
cout << "NO";
}
else if ((m==1 or m==3 or m==5 or m==7 or m==8 or m==10 or m==12)and(d <= 31)){
cout << "YES";
}
else if ((m==4 or m==6 or m==9 or m==11)and(d <= 30)){
cout << "YES";
}
else if (m=2 and ((y%100 != 0 and y%4 == 0)or(y%100 == 0 and y%400 == 0)) and d <= 29){
cout << "YES";
}
else if (m=2 and not((y%100 != 0 and y%4 == 0)or(y%100 == 0 and y%400 == 0)) and d <= 28){
cout << "YES";
}
else{
cout << "NO";
}
return 0;
}