您的位置:首页 > 编程语言 > Java开发

第四届蓝桥杯JAVA本科B(世纪末的星期)

2013-05-16 11:47 281 查看
 

运气有点好,小题对没两道,还好大题4道会三道。幸福有点太突然的拿到一等奖。

比赛的时候不会做,好囧~~(把闰年的计算方法给忘记了,加上对日期的API真心不熟悉)

 

package com.zcb;

import java.util.Calendar;
import java.util.GregorianCalendar;
/**
*
* @author zhengchubin
*
*/
/*  世纪末的星期
曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。
还有人称今后的某个世纪末的12月31日,如果是星期一则会....
有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!
于是,“谣言制造商”又修改为星期日......
1999年的12月31日是星期五,
请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?
请回答该年份(只写这个4位整数,不要写12月31等多余信息)
*/
public class EndDay
{
public static void main(String[] args)
{
//第一种方法
int day = -1;
for(int i=2099;i<5000;){
Calendar calendar = new GregorianCalendar(i,11,31);
day = calendar.get(Calendar.DAY_OF_WEEK);
if(day==1)
System.out.println(i);
i=i+100;
}
//第二种方法
int days = 5;//  1999年的最后一天为周5,把下一年加上5天正好是周日
int i=2000;   //  所以在2000年的天数上加5天,正好可被7整除的年的最后一天是周日
for(;;){
if(i%4==0&&i%100!=0||i%400==0){ // 平年365天  闰年366天
days=days%7+366;  // 把每一年对7取余的天数+下一年的天数
}else{
days=days%7+365;
}
if(days%7==0&&(i+"").endsWith("99")){
System.out.println(i);
break;
}
i++;
}
}
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: