package com.pb.structureAndalgorithm.previousRealTopic.test2013A;
/*
1999年12月31日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!
于是,“谣言制造商”又修改为星期日......
1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
*/
public class Main {
public static void main(String[] args) {
predictTheFuture(1999, 5);
}
private static void predictTheFuture(int startYear, int startWeek){
// 初始的年份
int year = startYear;
// 初始的星期
int week = startWeek;
while (true){
// 当周日就停止
if (week == 7){
break;
}
// 获取该年多少天
int numDay = statisticsYearNumDay(year);
// 一个星期7天, 所有取余7, 得到一个等于0或 大于0小于7的数
int tempWeek = numDay % 7;
// 循环这个余数, 循环结束就可得到 星期几
for (int i = 0; i < tempWeek; i++) {
// 星期大于7就置为1
if (week > 7){
week = 1;
}
// 星期自增
week ++;
}
// 年份自增
year ++;
}
System.out.println(year);
}
// 区分闰年和平年每年天数
private static int statisticsYearNumDay(int y){
// 默认平年天数
int dayNum = 366;
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)){
// 修改为闰年天数
dayNum = 365;
}
return dayNum;
}
}
蓝桥杯2013年B组第一题Java实现
最新推荐文章于 2024-04-18 20:56:31 发布