竞赛
考级
题目分析 如果日期合法,则输出 NO,否则输出 YES。 月份的范围为 111 ~ 121212。 每月日的范围可能有所不同,在平年下 111 ~ 121212 月份的天数为,31,28,31,30,31,30,31,31,30,31,30,3131, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 3131,28,31,30,31,30,31,31,30,31,30,31。 在闰年下,2月有 29 天。 AC代码 复杂度 O(1)O(1)O(1)。
AC君
暴力分类讨论。年份都合法,先从月份开始。 * 1,3,5,7,8,10,12 月: 日期 ∈[1,31]\in[1,31]∈[1,31] 合法,其它不合法。 * 4,6,9,11 月: 日期 ∈[1,30]\in[1,30]∈[1,30] 合法,其它不合法。 * 2 月: 如果是闰年,日期 ∈[1,29]\in[1,29]∈[1,29] 合法,其它不合法。 如果是平年,日期 ∈[1,28]\in[1,28]∈[1,28] 合法,其它不合法。 * 其它月份:不合法。 判断闰年的依据是:年份是 444 的倍数且不是 100100100 的倍数,或年份是 400400400 的倍数。
暑 假 神(开学祭
anyin775 请回关
#include <iostream> using namespace std; int main(){ int a,b,c; cin>>a>>b>>c; b=-b; c=-c; if(a>=1971&&a<=2100){ if(b>=1&&b<=12){ if(b1||b3||b5||b7||b8||b10||b12){ if(c>=1&&c<=31){ cout<<"NO"; } else{ cout<<"YES"; } } else if(b4||b6||b9||b11){ if(c>=1&&c<=30){ cout<<"NO"; } else{ cout<<"YES"; } } else if(b2){ if((a%40&&a%100!=0)||a%4000){ if(c>=1&&c<=29){ cout<<"NO"; } else{ cout<<"YES"; } } else{ if(c>=1&&c<=28){ cout<<"NO"; } else{ cout<<"YES"; } } } else{ cout<<"YES"; } } else{ cout<<"YES"; } } else{ cout<<"YES"; } return 0; }
不想打代码的餮蒲
分类讨论嗷嗷 从月份入手, 大月31天,小月30天 对于2月,平年28天,闰年29天 记住一句话:4年一闰 100年不闰 400年又一闰 然后就能解这题啦~~ tip:用的C++语言来输入“-”可以用一个char解决 AC代码:(看着有点赘。。)
C+Mouger+xhx
这个程序首先定义了一个isValidDate函数,该函数接收一个日期字符串作为参数,并返回一个布尔值表示该日期是否合法。然后,在main函数中,程序读取用户输入的日期字符串,并使用isValidDate函数进行校验,最后根据校验结果输出相应的信息。 注意,这个程序使用了C++标准库中的stringstream来解析输入的日期字符串,并通过一系列的条件判断来校验日期的合法性。其中,对于闰年的判断是通过判断年份是否能被4整除但不能被100整除,或者能被400整除来实现的。此外,对于每个月份的天数,程序也进行了相应的检查。
马智辉