1900年1月1日是星期一。
求 二十世纪(1901年1月1日到2000年12月31日)中,有多少个月的1号是星期天?
output :171
public static int countingSundays() {
//1900年1月1日是星期一,那么7号就是星期日 (1900年不是闰年)
int sum = 365 - 6;
int count = 0;
for(int i = 1901; i <=2000; i++) { //i表示年
for(int j =1; j <=12; j++) { //j表示月
sum = sum + dayOfYear(i, j);
if(sum % 7 == 0)
count ++; //最后一个月只加到1号,年循环完要把剩余的30天加上
}
sum = sum + 30;
}
return count;
}
//每月1号是当月的第几天
public static int dayOfYear(int year, int month) {
if(month == 1)
return 1;
return days(year, month-1) + dayOfYear(year, month-1);
}
public static int days(int year, int month) {
//1 3 5 7 8 10 12月 有31天。
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {
return 31;
}
else if(month==4 || month==6 || month==9 || month==11) {
return 30;
}
else if(month==2 && (year % 4 !=0 || year % 400 !=0)) {
return 28;
}
else {
return 29;
}
}
public static void main(String[] args) {
System.out.println(countingSundays());
}
- 闰年指的是能够被4整除却不能被100整除的年份,或者能够被400整除的年份。
参考程序二:
https://blog.csdn.net/qq_28394425/article/details/53083063