040 万年历

发布时间:2024-12-09 18:41

人类的历史可以追溯到约20万年前的非洲。 #生活百科# #百科知识#

总时间限制: 1000ms 内存限制: 65536kB
描述
给定年月日,求星期几。已知2020年11月18日是星期三。另外,本题有公元0年,这个和真实的纪年不一样

输入
第一行是n(n <=30),表示有n组数据
接下来n行,每行是一组数据。
每行三个整数y,m,d,分别代表年,月,日。(-1000000<=y<=1000000)

若今年是2017年,则往前就是2016年,2015年…一直数到2年,1年,再往前就是0年,-1年,-2年…
输出
对每组数据,输出星期几,星期几分别用

“Sunday”,“Monday”,“Tuesday”,“Wednesday”,“Thursday”, “Friday”,“Saturday” 表示

如果月份和日期不合法,输出"Illegal"

样例输入:

6 2017 2 29 2017 13 2 0 1 1 -2 3 4 2017 10 18 2015 12 31 1234567

样例输出:

Illegal Illegal Saturday Wednesday Wednesday Thursday 123456

来源
Guo Wei
我的思考:
郭炜老师给了思路,修改他讲解的例题代码。原本想用数学的方法后面想想还是算了……枚举好理解点,特别在往后逆推天数。
求年份小于2012的星期几,在好好听了老师讲的思路后,用逆向的思维去求解即可,比如求 0 1 1,那我们就求从0 年 到 2012 年有多少天,然后 用days%7便得到了 还剩下下的余数,同样是用逆向思维,比如余1,那就是周六,也就是7-days%7,但这还不够,因为这个公式在days%7==0的情况下,得到的是7,可我们的xq列表里Sunday排0,所以继续取余,就变成了 (7-days%7)%7,这样就可以得到正确的下标。

其实一开始我觉得难的地方是0年怎么算,看了提示后,我意识到例题里的判断是否闰年的方法应该是可以继续沿用的,然后重点在year<2012时逆推天数。

代码如下:
第一次没成功,修改了下,第二次就ac了。这道题算是个奇葩,代码长度和前面比起来突然增加……

xq=["Sunday","Monday","Tuesday","Wednesday","Thursday", "Friday","Saturday"] n=int(input()) 12

网址:040 万年历 https://www.yuejiaxmz.com/news/view/427133

相关内容

万年历
DIY万年历手工积木
吉运万年历
如何自制独特风格的万年历日历——手工DIY教程
中华万年历首页、教程和下载–完美下载
年薪百万的华为工程师离职后的心路历程,年轻人都应该看看!
历年项目
【(2012•深圳)“节能环保,低碳生活”是我们倡导的一种生活方式,某家电商场计划用11.8万元购进节能型电视机、洗衣机和空调共40台,三种家电的进价和售价如表所示:价格种类进价(】
低学历女生必考的8个证书 实现月薪1万
【“节能环保,低碳生活”是我们倡导的一种生活方式.某家电商场计划用11.8万元购进节能型电视机、洗衣机和空调共40台.三种家电的进价及售价如表所示:进价(元/台)售价(元】

随便看看