题目
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会…
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日…1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
分析
一年365天(特别注意闰年,闰年一年共366天,闰年每四年一次),
365/7=52......1(每年52个星期多1天),
将多出来的天数再对7(一周7天)进行整除,
判断世纪末的是否为周日。
代码
public class Main {
public static void main(String[] args) {
int year=1999;
int week=5;
int day=0;
int plus=0;
boolean judge=false;
for(int i=2000;i<=9999;i++){
judge=runnian(i); //判断是否为闰年
if(judge)
day=day+366;
else day=day+365;
//一周七天一个循环
plus=day%7+week;
if(plus>7){
plus=plus%7;
}
//判断是否是世纪最后一年
if(i%100==99){
//且是否为周日
if(plus==7){
year=i;
break;
}
}
}
System.out.println(year);
}
//判断是否为闰年
public static boolean runnian(int year){
if(year%100==0){
//1.整百年且能够被400整除
if(year%400==0){
return true;
}
else return false;
}
else{
//2.非整百年且能够被4整除
if(year%4==0){
return true;
}
else return false;
}
}
}
输出结果
2299