问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入格式
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
2
9
思路
最简单的穷举法,首先定义两个一维整型数组,用于记录闰年和非闰年每个月的天数,然后判断年份,再分闰年和非闰年来计算结果。
代码
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int y = in.nextInt();
int d = in.nextInt();
int[] a = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 闰年每个月的天数
int[] b = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 非闰年每个月的天数
if(isLeap(y)){// 是闰年
if(d <= a[1]){
System.out.println(1);
System.out.println(d);
}else if(a[1] < d && d <= a[1] + a[2]){
System.out.println(2);
System.out.println(d - a[1]);
}else if(a[1] + a[2] < d && d <= a[1] + a[2] + a[3]){
System.out.println(3);
System.out.println(d - (a[1] + a[2]));
}else if(a[1] + a[2] + a[3] < d && d <= a[1] + a[2] + a[3] + a[4]){
System.out.println(4);
System.out.println(d - (a[1] + a[2] + a[3]));
}else if(a[1] + a[2] + a[3] + a[4] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5]){
System.out.println(5);
System.out.println(d - (a[1] + a[2] + a[3] + a[4]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6]){
System.out.println(6);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] + a[6] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7]){
System.out.println(7);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8]){
System.out.println(8);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9]){
System.out.println(9);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10]){
System.out.println(10);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9]));
}else if(a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10] < d && d <= a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10] + a[11]){
System.out.println(11);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10]));
}else{
System.out.println(12);
System.out.println(d - (a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10] + a[11]));
}
}else{// 不是闰年
if(d <= b[1]){
System.out.println(1);
System.out.println(d);
}else if(b[1] < d && d <= b[1] + b[2]){
System.out.println(2);
System.out.println(d - b[1]);
}else if(b[1] + b[2] < d && d <= b[1] + b[2] + b[3]){
System.out.println(3);
System.out.println(d - (b[1] + b[2]));
}else if(b[1] + b[2] + b[3] < d && d <= b[1] + b[2] + b[3] + b[4]){
System.out.println(4);
System.out.println(d - (b[1] + b[2] + b[3]));
}else if(b[1] + b[2] + b[3] + b[4] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5]){
System.out.println(5);
System.out.println(d - (b[1] + b[2] + b[3] + b[4]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6]){
System.out.println(6);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] + b[6] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7]){
System.out.println(7);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8]){
System.out.println(8);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9]){
System.out.println(9);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] + b[10]){
System.out.println(10);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9]));
}else if(b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] + b[10] < d && d <= b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] + b[10] + b[11]){
System.out.println(11);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] + b[10]));
}else{
System.out.println(12);
System.out.println(d - (b[1] + b[2] + b[3] + b[4] + b[5] + b[6] + b[7] + b[8] + b[9] + b[10] + b[11]));
}
}
}
// 判断是否是闰年的方法
public static boolean isLeap(int year){
if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){
return true;
}
return false;
}
}