AT_abc331_a 正解
  • 板块灌水区
  • 楼主kun_men
  • 当前回复11
  • 已保存回复11
  • 发布时间2024/1/22 19:42
  • 上次更新2024/1/22 19:52:11
查看原帖
AT_abc331_a 正解
939780
kun_men楼主2024/1/22 19:42

1、题面:

题目:计算明天的年月日

时间限制:

2s

内存限制:

1024MB;

分数:

100分

问题描述:

在AtCoder王国的日历中,一年由第一个月到第M个月的M个月组成,每个月由第一天到第D天的D天组成。

在这个日历中,求明天是哪一年的几月几日。

限制条件:

1000≤y≤9000

1≤m≤M≤99

1≤d≤D≤99

所有输入值都是整数。

思路:

1、输入

2、运用if判断这个日期的下一天是否进入了下一个月(一定是d==D的时候下一天才是下一个月,而不是d+1==D)

3、我们非常容易发现,只有在下一天越界的时候,年份才可能增加,也就是下一月也越界了,所以直接在if里再写一个if,判断下一个月是否进入了下一年。

4、输出

注意如果这一天或者一个月“越界”了,在月数或年数加一要把天数或月数变成1。变成0就爆炸

AC代码:

#include<bits/stdc++.h>
using namespace std;
int M,D,y,m,d;
int main(){
    cin>>M>>D;
    cin>>y>>m>>d;
    if(d==D){//判断这个日期的下一天是否进入了下一个月
        d=1;//天数清1
        m++;//月数加1,可能存在下一月越界的情况,所以用m-1
        if(m-1==M){//判断下一个月是否进入了下一年
            m=1;//月数清1
            y++;//年数加1
        }//没有else,月份已经加一
    }else{//日期的下一天没有进入了下一个月
        d++;//天数直接加一
    }
    cout<<y<<" "<<m<<" "<<d;
    return 0;//帅气收场
}

注意事项:

为了您的身心健康,请不要复制任何题解刷AC率。

维护知识产权,拒绝复制粘贴。

不刷AC率,从你我他做起。(原声大碟)

最后,请分析注意事项的作用(4分)

2024/1/22 19:42
加载中...