题解 P5690 【[CSP-SJX2019]日期】

· · 题解

输出仅一行。或成此题最短题解?

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m;char c;//定义一行
    cin>>n>>c>>m;//输入一行
    cout<<(n>12||n==0)+(m>31||m==0||n==2&&m>28);//输出一行
    //顺带科普:cout中可以写表达式……
    return 0;
}

大致思路:

首先月和日显然是不能为零的。

其次,由于如果不符合要求我们就可以将十位数改为0,达到要求。

所以可得,如果要改,月和日最多都只能改一次。

最后,当日期为2月29/30/31日时,还要加上特判。

再加上洛谷数据之弱,然后九行搞定~

点个赞再走呗~