每个日期可以转成8位数字,比如 2020年4月28日 对应的就是 20200428。请找出从现在开始满足条件的1个最近的日期,这个日期中包含m个n数字,m(1<=m<=6),n(1<=n<=9)由键盘输入。 输入格式: 输入m(1<=m<=6),n(1<=n<=9),空格分开。 输出格式: 符合要求的日期。
时间: 2023-11-27 09:50:17 浏览: 81
这个问题可以分成两个子问题,首先需要编写一个函数来判断一个8位数字表示的日期是否包含指定的数字,然后再从当前日期开始,逐个向后搜索符合要求的日期。
下面是一个Python的实现:
```python
def contains_digits(date, digits):
"""
判断一个8位数字表示的日期是否包含指定的数字
"""
for digit in digits:
if str(digit) not in str(date):
return False
return True
# 从当前日期开始,向后搜索符合要求的日期
import datetime
m, n = map(int, input().split())
today = datetime.datetime.today().date()
delta = datetime.timedelta(days=1)
while True:
date_str = today.strftime('%Y%m%d')
if contains_digits(date_str, range(1, n+1)) and len(set(date_str) & set(str(i) for i in range(1, n+1))) == m:
print(date_str)
break
today += delta
```
这个程序首先定义了一个`contains_digits`函数来判断一个8位数字表示的日期是否包含指定的数字。这个函数首先使用`for`循环遍历所有指定的数字,然后在每次迭代中使用`str()`函数将数字转换为字符串,并使用`in`关键字检查该字符串是否出现在日期字符串中。如果有任何一个指定的数字没有出现在日期字符串中,则返回`False`,否则返回`True`。
然后程序使用`input()`函数从键盘读取输入的`m`和`n`,并使用Python的日期和时间模块`datetime`获取当前日期。接着程序使用一个`while`循环,每次迭代都检查当前日期是否符合要求。如果符合,则输出该日期并结束程序;否则,程序将日期加上一天,继续下一轮循环。程序使用`strftime()`函数将日期转换为字符串格式,并使用`set()`函数计算该日期中包含的不同数字的个数。如果这个数字个数等于`m`,并且该日期包含了所有从1到`n`的数字,则说明该日期符合要求。
阅读全文