已知今天的日期,请你推算若干天后是什么日期。
说明:假设今天的日期是 y1 年 m1 月 d1 日,过 n 天后的日期为 y2 年 m2 月 d2 日。
输入格式
y1/m1/d1
n(n>0)
输出格式
y2/m2/d2
注:y2 至少4位数字,m2 和 d2 至少2位数字,若位数不够,则前面补0。
输入样例:
2018/2/14 22
输出样例:
2018/03/08解题思路:
将输入的天数直接都加到day上,年份分为平润两类,每个类型中以月份为基准,当月份的天数满足条件时,退出循环,否则将超出的天数减去,month++,继续循环,月份满12时,将年份加一,同时将月份置为1。细节较多~
javaAC代码:import java.io.*;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split("/");
int year = Integer.parseInt(split[0]);
int month = Integer.parseInt(split[1]);
int day = Integer.parseInt(split[2]);
int n = Integer.parseInt(br.readLine());
int []d1 = {0,31,28,31,30,31,30,31,31,30,31,30,31};
int []d2 = {0,31,29,31,30,31,30,31,31,30,31,30,31};
day += n;
while(true) {
if(isLeapYear(year)) {
if(d2[month] < day) {
day -= d2[month];
}else {
break;
}
month++;
if(month > 12) {
year++;
month = 1;
}
}else {
if(d1[month] < day) {
day -= d1[month];
}else {
break;
}
month++;
if(month > 12) {
year++;
month = 1;
}
}
}
System.out.printf("%04d/%02d/%02d",year,month,day);
}
public static boolean isLeapYear(int year) {
if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return true;
}
return false;
}
}



