本文已参与「新人创作礼」活动,一起开启掘金创作之路
世纪末的星期
题目描述 曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会… 有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日…1999年的12月31日是星期五,请问:未来哪一个离我们最近的一个世纪末年(即xx99年)的12月31日正好是星期天(即星期日)? 请回答该年份(只写这个4位整数,不要写12月31等多余信息)
判断平年(common year)和闰年(leap year)的计算方法很简答:
- 如果年份是整百年份,用年份除以400,没有余数即为闰年,有余数即为平年。
- 如果年份不是整百年份,用年份除以4,没有余数即为闰年,有余数即为平年。 25366+75365 # 36525天 25个闰年,75个平年 24366+76365) # 36524天 25个闰年,76个平年
num = 5
for i in range(1,1000):
if (i+19)%4 == 0: # 判断百年是否是闰年
num+= 6 # 36525%7
else:
num += 5 # 36524%7
num = num%7 # 取余数,
if num == 0:
print(i)
break
答案:2299
数的分解
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4, 一共有多少种不同的分解方法? 注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。
1、三个数不能相同
2、三个数中最大的数为2016
3、不能出现复数
sum1 = 0
# 生成第一个数
for i in range(1, 2017):
a = str(i)
if '2' in a or '4' in a:
continue
# 第二个数
for j in range(1, 2019-i):
b = str(j)
if '2' in b or '4' in b or i == j:
continue
h = 2019-i-j # 第三个数
c = str(h)
if '2' in c or '4' in c or h <= 0 or i == h or j == h:
continue
sum1 += 1
# 三个数的排列情况有6种
print(int(sum1/6))