CSP历年真题201509-2-日期计算(Java)

问题描述

给定一个年份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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值