问题描述 已知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
代码语言:javascript复制import java.io.BufferedInputStream;
import java.util.Scanner;
public class Main {
public static boolean IsLeap(int year){
if (year % 4 == 0 && year % 100 != 0){
return true;
}
if (year % 400 == 0)
return true;
return false;
}
public static long Week(int year ,int month, int day){
long sum = 0;
for( int i = 1 ; i < year ; i ){
if (IsLeap(i)){
sum = 366;
}else{
sum = 365;
}
}
for( int i = 1 ; i < month ; i ){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
sum =31;
if(i==4||i==6||i==9||i==11)
sum =30;
if(i==2&&IsLeap(year))
sum =29;
if(i==2&&!IsLeap(year))
sum =28;
}
sum = day;
sum %= 7;
return sum;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in= new Scanner(new BufferedInputStream(System.in));
String str = in.nextLine();
String[] split = str.split(" ");
int year = Integer.parseInt(split[0]);
int month = Integer.parseInt(split[1]);
int day = Integer.parseInt(split[2]);
System.out.println(Week(year, month, day));
in.close();
}
}
(PS:真的不懂为什么图中6,7两个样例错误了,我以为是sum太大越界了,但是把int换成long还是一样。。。。。若各位仁兄能找出来了,请留言。)