www 被大佬们|

wscqwq

园龄:2年粉丝:2关注:3

日期

日期

这道题比较水,但还是十分值得深思的,有点像数学里的分类讨论问题。

  • 日期为 31

    • 月份为 1,3,5,7,8,10,12 无需修改。

    • 月份为 2,4,6,9,111 次(都改成 1 月)。

    • 除掉以上合法的月份,当个位为 4,6,9 时,修改十位不能达到目的。

    • 其他情况均可以 1 次成功,如果各位为 0,2,改成 10 月;否则将其十位改成 0

  • 日期为 29,30

    • 如果是 2 月或者是其他不合法的月份,修改一次;2 月改 1 月;个位为 0,2 改十位为 10,12。其他情况直接改十位为 0
    • 否则,无需修改。
  • 日期为 128

    • 月份合法无需修改
    • 月份不合法修改,同 29,30 第一点的改法。
  • 日期不合法

    • 个位为 0 改为 10,否则改成个位的数。
    • 如果月份不合法,修改一次,同 29,30 第一点的改法。

综上,所有情况都已分析完,时间复杂度 O(1)

#include<bits/stdc++.h>
using namespace std;
int m,d;
int main(){
    scanf("%d-%d",&m,&d);
    if(d==31){
        if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)puts("0");
        else if(m==2||m==4||m==6||m==9||m==11)puts("1");
        else if(m%10==4||m%10==6||m%10==9)puts("2");
        else puts("1");
    }
    else if(d==29||d==30){
        if(m==2||m==0||m>12)puts("1");
        else puts("0");
    }
    else if(d>0&&d<=28){
        if(m>0&&m<=12)puts("0");
        else puts("1");
    }
    else if(m==0||m>12)puts("2");
    else puts("1");
    return 0;
}

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17420340.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起