点击蓝字 关注我们
今天要做的是来自洛谷网站的P5711 【深基3.例3】闰年判断。
https://www.luogu.com.cn/problem/P5711
有账号的可以上去做做。
P5711 【深基3.例3】闰年判断
题目描述
输入一个年份,判断这一年是否是闰年,如果是输出 1,否则输出 0。
1582 年以来,闰年的定义:
普通闰年:公历年份是 4 的倍数,且不是 100 的倍数的,为闰年(如 2004 年、2020 年等就是闰年)。
世纪闰年:公历年份是整百数的,必须是 400 的倍数才是闰年(如 1900 年不是闰年,2000 年是闰年)。
输入格式
输入一个正整数 n,表示年份。
输出格式
输出一行。如果输入的年份是闰年则输出 1,否则输出 0。
输入输出样例
说明/提示
数据保证,1582≤n≤2020 且年份为自然数。
解题思路
满足下面二者其一就是闰年:
1、普通闰年:能被 4 整除 并且 不能被 100 整除
n % 4 == 0 and n % 100 != 0
2、世纪闰年:能被 400 整除
n % 400 == 0
合并表达式:
(n % 4 == 0 and n % 100 != 0) or (n % 400 == 0)
知识点
字符输入 input() 获取字符串,再用int()转换成整数。
判断n是否被m整除:n%m==0
逻辑运算符:and同时满足,or满足其中一个。
参考代码及解析
n = int(input())读取输入内容,转为整数,代表年份;
if (n % 4 == 0 and n % 100 != 0) or (n % 400 == 0):条件拆分:n % 4 == 0 and n % 100 != 0:普通闰年;n % 400 == 0:世纪闰年;中间 or 代表满足任意一种就是闰年;添加括号方便阅读理解。
print(1)条件成立,是闰年,输出 1;
else: print(0)条件不成立,不是闰年,输出 0。
如果你觉得意犹未尽,那就趁热打铁,继续挑战一下吧!
P5716 【深基3.例9】月份天数
输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
输入两个正整数,分别表示年份 y 和月数 m,以空格隔开。
输出一行一个正整数,表示这个月有多少天。