zoukankan      html  css  js  c++  java
  • java实现第四届蓝桥杯世纪末星期

    世纪末星期

    题目描述
    曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。

    还有人称今后的某个世纪末的12月31日,如果是星期一则会…

    有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!!

    于是,“谣言制造商”又修改为星期日…

    1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)?

    请回答该年份(只写这个4位整数,不要写12月31等多余信息)

    解题思路
    这里用到了Java中的一个日期API——Calendar(1970年后的日期才可以使用这个API)

    只需从1999年开始每次增加100年遍历,看看对应世纪末年份12月31日是否为星期日即可停止遍历。

    import java.util.Calendar;
     
    public class Main {
     
    	public static void main(String[] args) {
    		Calendar calendar = Calendar.getInstance();
    		for (int year = 1999; year < 10000; year += 100) {
    			calendar.set(year, 11, 31);  // 注意0是代表1月份,所以12月份应该是11
    			if (calendar.get(Calendar.DAY_OF_WEEK) == 1) {  // 这里星期日为1,星期一为2...
    				System.out.println(year);
    				break;
    			}
    		}
    	}
     
    }
    

    结果
    2299

    提示:题意中埋了一个坑,它说1999年的12月31日是星期五,这里我们应该验证一下实际中这天是否为星期五再去解题。

    我们可以用calendar.set(1999, 11, 31);和System.out.println(calendar.get(Calendar.DAY_OF_WEEK));这两句来看看输出结果是否为6

    巧解

    其实这道题我们可以直接借助excel的内置函数来解决。

    1、我们在A1单元格这里输入1999年12月31日

    在这里插入图片描述

    2、选中B2这个单元格,在输入框输入=WEEKDAY(A1,2)然后回车。这里第一个参数是想到得到对应星期的日期所在的单元格位置,第二个给2是为了,让1代表星期一,2代表星期二等,这样子方便看点。假如给1则1代表星期日了。
    在这里插入图片描述

    3、在A2单元格中输入2099年12月31日,然后选中A1和A2这两个单元格往下拉。这样A列就是每次增加100年的了。最后选中B1这个单元格往下拉,就能得出左边对应日期所对应的星期了。

    在这里插入图片描述

    这样就得出了2299这个答案了。

  • 相关阅读:
    SCCM 2012系列之新特性
    本地用户管理
    ISA中的WEB链
    Windows Server 2012远程刷新客户端组策略,IE代理设置
    关于单一网络适配器拓扑TMG
    IP及DNS设置(Netsh)
    MIPI接口
    液晶屏MIPI接口与LVDS接口区别(总结)
    色彩和光的知识
    LED全彩显示屏色度空间
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947532.html
Copyright © 2011-2022 走看看