思路:算出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; }}
新闻热点
疑难解答