pacelife 发表于 2015-11-1 00:16:23

计算1901年1月1日到2016年12月31日具体有哪些日期星期日落在了当月的第一天

本帖最后由 pacelife 于 2015-11-1 00:19 编辑

这个题目根据欧拉计划第19题改编而来,有兴趣的同学不妨试一下,需要用到编程的知识:

[*]1900年1月1日是星期一。
[*]30天的月份有:9月,4月,6月,11月。
[*]此外的月份都是31天,当然2月除外。
[*]2月在闰年有29天,其他时候有28天。
[*]年份可以被4整除的时候是闰年,但是不能被400整除的世纪年(100的整数倍年)除外。
计算1900年1月1日到2016年12月31日具体有哪些日期星期日落在了当月的第一天?
原题只需要计算多少天,现在我把题目改成算出具体的日期,难度增加了一点,能做出来还是很有成就感的,下面我贴出我自己的算法,其实按照这些完全可以做一个万年历了



阳光小院暖茶 发表于 2015-11-1 08:17:03

看到日期就头疼,什么月份,星期几,几月几号。我觉得这些和天文联系更多,和数学联系较少。比如,为什么有的月份是30天,有的月份是31天,有的月份是28天?谁知道?

fwsc 发表于 2015-11-1 19:01:35

我用笨方法玩出来了



pacelife 发表于 2015-11-1 20:14:04

能解释一下你的解题思路吗

fwsc 发表于 2015-11-1 20:35:19

本帖最后由 fwsc 于 2015-11-1 20:44 编辑

很简单啊,用Excel里的表格和函数

1、首先用一张表格生成每个月第一天日期。


使用DATE()函数


做一排出来,其余竖着拖,填满表格。

2、用另一张表格计算该天是每周的第几天。
使用WEEKDAY()函数,横拖竖拖填满表格。


3、凡是余数为1的就是我们需要的日期。
使用条件格式,让其突显出来。
字体全为白色,凡是等于1的,背景改为红色,凡是不等于1的,背景改为白色。这样红色的就突显出来了,白色的就看不见了。






fwsc 发表于 2015-11-1 20:41:27

想用一张表格来处理,发现WEEKDAY()函数不认其内部嵌套函数,比如WEEKDAY(DATE(,,,),[]),它的参数只能是已经计算好的值,弄不懂怎么回事,就分两张表格来处理,略微费点劲。



页: [1]
查看完整版本: 计算1901年1月1日到2016年12月31日具体有哪些日期星期日落在了当月的第一天