问题描述
给定一个年份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