输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。 输入格式: 输入在一行中给出21世纪的某个截止年份。 输出格式: 逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出\"invalid year!\"。若不存在任何闰年,则输出“none”。
时间: 2023-05-31 15:19:08 浏览: 166
输入年份 判别是否为闰年
### 回答1:
该题意为输入一个截止某个年份的所有相关年份,注意:判断年份的条件是该年份能被4整除但不能被100整除,或者能被400整除。若输入的年份不是21世纪的年份,则输出"invalid year!",若没有任何相关年份,则输出"none"。
### 回答2:
题目分析:
题目要求输出21世纪中截止某个年份以来的所有闰年年份,因此需要先判断输入年份是否在21世纪内。判断闰年的条件是该年年份能被4整除但不能被100整除、或者能被400整除。按照要求逐行输出所有满足条件的闰年年份,若不存在任何闰年,则输出“none”。
思路:
1.判断输入年份是否属于21世纪。
2.对每个年份进行闰年的判别,将是闰年的年份加入到结果列表中。
3.判断结果列表是否为空,若为空则输出“none”,否则逐行输出结果列表中的年份。
代码实现:
```python
year = int(input())
if year < 2001 or year > 2100:
print("invalid year!")
else:
result = []
for i in range(2001, year+1):
if(i % 4 == 0 and i % 100 != 0) or i % 400 == 0:
result.append(i)
if len(result) == 0:
print("none")
else:
for i in result:
print(i)
```
复杂度分析:
在最坏情况下,需要判断输入年份是否在21世纪内,因此时间复杂度为O(1);对于每个年份需要进行一次闰年的判别,因此为O(N);需要输出每个满足条件的年份,因此时间复杂度为O(N)。因此总时间复杂度为O(N)。
### 回答3:
题目描述
输出21世纪中截止某个年份以来的所有闰年年份。
输入格式
输入在一行中给出21世纪的某个截止年份。
输出格式
逐行输出满足条件的所有闰年年份,即每个年份占一行。输入若非21世纪的年份则输出\"invalid year!\"。若不存在任何闰年,则输出“none”。
闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
样例输入
2100
样例输出
2004
2008
2012
2016
2020
2024
2028
2032
2036
2040
2044
2048
2052
2056
2060
2064
2068
2072
2076
2080
2084
2088
2092
2096
算法1
(暴力枚举) $O(n)$
首先判断年份是否符合21世纪,如果不符合输出 invalid year!
接着枚举该年份到这个年份的范围,若满足是闰年,就输出该年份。
时间复杂度
枚举长度为n。时间复杂度为$O(n)$。
Python 代码
n = int(input())
if n < 2001:
print('invalid year!')
else:
leap_years = []
for year in range(2001, n+1):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
leap_years.append(year)
if leap_years:
for leap_year in leap_years:
print(leap_year, end='\n')
else:
print('none')
阅读全文