0
点赞
收藏
分享

微信扫一扫

蓝桥杯 算法提高 日期计算

毅会 2022-08-23 阅读 75

 算法提高 日期计算  

时间限制:1.0s   内存限制:256.0MB

   

问题描述

 已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。

输入格式

 输入只有一行

 YYYY MM DD

输出格式

 输出只有一行

 W

数据规模和约定

1599 <= YYYY <= 2999 
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日

样例输入

2011 11 11

样例输出

5

思路:调用api


AC代码:


import java.util.Calendar;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int year,month,day;
year = in.nextInt();
month = in.nextInt();
day = in.nextInt();
Calendar cal = Calendar.getInstance();
//0表示1月份,1表示2月份
cal.set(year, month-1, day);
//1表示星期日,2表示星期一
int temp = cal.get(Calendar.DAY_OF_WEEK);
if (temp == 1)
System.out.println(7);
else
System.out.println(temp - 1);
}
}


思路:算出2011年11月11日到1599年1月1日的天数,再算出要求的日期到1599年1月1日的天数,2个作差对7取余即可求出星期几

AC代码:

import java.util.Scanner;

public class Main {

static int[] mon = {0,31,28,31,30,31,30,31,31,30,31,30,31};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int year = in.nextInt();
int month = in.nextInt();
int day = in.nextInt();
int sum1 = cal(2011,11,11);
int sum2 = cal(year,month,day);
if(sum1 <= sum2) {
int sum = (sum2 - sum1 + 12) % 7;
if(sum == 0)
sum = 7;
System.out.println(sum);
} else {
int sum = (sum1 - sum2) % 7;
if(sum == 0)
System.out.println(5);
else if(sum == 1)
System.out.println(4);
else if(sum == 2)
System.out.println(3);
else if(sum == 3)
System.out.println(2);
else if(sum == 4)
System.out.println(1);
else if(sum == 5)
System.out.println(7);
else if(sum == 6)
System.out.println(6);
}
}

public static int cal(int year,int month,int day) {
int sum = 0;
//注意这里是i<year
for(int i=1599; i<year; i++) {
if((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
sum += 366;
} else {
sum += 365;
}
}
//注意这里是i<month
for(int i=1; i<month; i++) {
//是闰年的第二月,天数是29天
if(((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && i == 2)
sum += mon[i] + 1;
else
sum += mon[i];
}
sum += day;
return sum;
}

}



举报

相关推荐

0 条评论