试题编号: 201509-2
试题名称: 日期计算
时间限制: 1.0s
内存限制: 256.0MB
问题描述: 给定一个年份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 T201509_2 { static int y; static int d; static int m = 1; // 从1月开始 public static void main(String[] args) { Scanner sc = new Scanner(System.in); y = sc.nextInt(); d = sc.nextInt(); sc.close(); boolean rn = false; // 闰年 if((y%4==0 && y%100!=0) || y%400==0) // 是否闰年 rn = true; while(d > 0){ switch (m) { // 31天的月份 case 1:case 3:case 5:case 7:case 8:case 10:case 12: cal(31); break; // 30天的月份 case 4:case 6:case 9:case 11: cal(30); break; // 2月 case 2: if(rn) cal(29); else cal(28); break; } } } /** * 计算 * @param day 每一月的天数 */ static void cal(int day){ if(d > day){ // 剩余d超过一个月 d -= day; m++; // 月份计数 }else{ // 剩余d就在本月 System.out.println(m); // 月 System.out.println(d); // 日 d = 0; // 退出主函数中的while循环 } } }