您的位置:首页 > 编程语言 > Java开发

CCF 日期计算(Java)

2017-08-31 13:02 337 查看
试题编号: 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循环
}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: