蓝桥杯算法提高java_算法提高 日期计算 蓝桥杯java详解

算法提高 日期计算

时间限制: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

1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner input=new Scanner(System.in);

int year=input.nextInt();

int month=input.nextInt();

int day=input.nextInt();

int sum;

int sum1;

sum=getyd(year);

//计算真实的天数

if(year<2011){

sum=sum-getmd(year,month,day);

//判断给出的某年某月是星期几

sum1=(sum%7==6)?7:Math.abs(6-(sum%7));

System.out.println(sum1);

}else {

sum=sum+getmd(year,month,day);

sum1=((6+(sum%7))>7)?(6+(sum%7))%7:(6+(sum%7));

System.out.println(sum1);

}

}

//计算的与给出的月份和已知的月份的总共月数

public static int getmd(int year,int month,int day) {

int sum1=0;

for(int i=1;i

if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){

sum1+=31;

}else if(i==4||i==6||i==9||i==11){

sum1+=30;

}else if(i==2&&leap(year)){

sum1+=29;

}else if(i==2&&!leap(year)){

sum1+=28;

}

}

sum1=sum1+day-1;

return sum1;

}

//计算年份的天数

public static int getyd(int year) {

int sum=0;

if(year<=2011){

for(int i=year;i<2011;i++){

if(leap(i)){

sum+=366;

}else sum+=365;

}

}else if(year>2011){

for(int i=2011;i

if(leap(i)){

sum+=366;

}else sum+=365;

}

}

return sum;

}

//判断给出的年份是否是闰年

public static boolean leap(int year) {

if(year%4==0&&year%100!=0){

return true;

}else if(year%400==0){

return true;

}else

return false;

}

}

反馈

帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值