题目描述
小科的生日是YY年MM月DD日,他想知道自己出生第10000天纪念的日期,出生日算第0天
输入格式
输入三个整数,分别表示YY,MM,DD,其中 1949≤YY≤2016
输出格式
输出小科身体第一万天以后的日期,格式为YY-MM-DD
输入输出样例
2016 10 31
2044-3-18
解题思路
是日期类的题目,编写一个函数(或者直接在for循环写)把日期挪到下一天,一直挪10000次即可。
解题思路2(未编写)
先确定10000天后的年数,然后再确定月和日,代码没有上一个直接,但实现较为容易。
示例代码
#include<bits/stdc++.h>
using namespace std;
int M[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool run(int Y){
if(Y%100==0) return Y%400==0;
return Y%4==0;
}
void Last(int &yy,int &mm,int &dd){
dd++;
if(run(yy)&&mm==2&&dd==30) mm++,dd=1;
else if(!(run(yy)&&mm==2)&&dd>M[mm]) mm++,dd=1;
if(mm==13) yy++,mm=1,dd=1;
}
int main(){
int y,m,d;
cin>>y>>m>>d;
for(int i=1;i<=10000;i++){
Last(y,m,d);
}
printf("%d-%d-%d",y,m,d);
return 0;
}