• 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这个答案了。

  • 相关阅读:
    python os一些相关操作
    查看linux系统占用的端口号
    asp.net 2.0
    winform oracle
    winform sql server 增删查改
    CPTW移仓程序Procedure
    创建一个类,实现只会实例化一次。
    javascript静态页面传值的三种方法,让你一次爽个够!
    点击链接或按钮使框架页面整体跳出到指定的页面
    javascript动态添加控件
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077315.html
Copyright © 2020-2023  润新知