蓝桥杯比赛中,会出现关于时间差的问题,这里给出一个通用的解法。
这里给出一个例题,并给出解法
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
曾有邪教称 1999年 12 月 31 日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的 12月 31 日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的 12 月 31 日都不可能是星期一!!
于是,“谣言制造商”又修改为星期日......
1999 年的 12 月 31 日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即 xx99 年)的 12 月 31日正好是星期天(即星期日)?
请回答该年份(只写这个 4 位整数,不要写 12 月 31 等多余信息)
例题为2013年省赛填空题,难度:简单,可用下列方法得出
package lanqiao;
import java.sql.Time;
public class Test {
static int Time(int year1,int month1,int day1,int year2,int month2,int day2) {
return Timenum(year1,month1,day1)-Timenum(year2,month2,day2);
}
static int Timenum(int year,int month,int day) {
int []data= {0,31,28,31,30,31,30,31,31,30,31,30,31};
if((year%100==0&&year%400==0)||(year%100!=0&&year%4==0))
data[2]++;
int daycount=0;
for (int i = 1; i < year; i++) {
daycount+=365;
if((i%100==0&&i%400==0)||(i%100!=0&&i%4==0))
daycount++;
}
for (int j = 0; j < month; j++) {
daycount+=data[j];
}
daycount+=day;
return daycount;
}
public static void main(String[] args) {
for (int i = 1999; i <10000; i+=100) {
int count=Time(i,12,31,1999,12,31);
//System.out.println();
if(count%7==2) {
System.out.println(i);
break;
}
}
}
}
仅供参考,本人已运行,可正常运行,如有不足欢迎指出!