【python】2021年省赛练习赛04 B:算法提高 日期计算
问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行
YYYY MM DD
输出格式
输出只有一行
W
数据规模和约定
1599 <= YYYY <= 2999
1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
方法1 用datetime 模块
import datetime
y,m,d=[int(i) for i in input().split()]
print(datetime.datetime(y,m,d).strftime('%w'))
方法2 普通做法
思路:计算从到期时间到1599年有多少天,然后取余
y,m,d=[int(i) for i in input().split()]
s=0
for i in range(1599,y): # 先计算年
if i%400==0 or i%4==0 and i%100!=0:
s+=366
else:s+=365
for i in range(1,m): # 月
if i ==2:
if i%400==0 or i%4==0 and i%100!=0:
s+=29
else:s+=28
elif i in [1,3,5,7,8,10,12]:
s+=31
else:s+=30
w=(s+d+4)%7 # 偏移量4
if w==0:
print(7)
else:print(w)
版权声明:本文为m0_60082435原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END