本文主要是介绍L1-033 出生年 Python,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
L1-033 出生年 - 15 分
- 题目
- 要点
- 代码
题目链接.
题目
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。
输入格式:
输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。
输出格式:
根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。
输入样例1:
1988 4
结尾无空行
输出样例1:
25 2013
结尾无空行
输入样例2:
1 2
输出样例2:
0 0001
要点
- 处理不满四位的数,需要添’0’
- 所谓“n个数字都不相同”是指不同的数字正好是n个
代码
# 设置一个集合,记录当前年份有那些数字
# 集合不会记录重复的元素
digit = set()# 出生年份y和目标年份中不同数字的个数n
y, n = map(int, input().split(' '))# 用i记录过去了几年
i = 0
while 1:digit = set()# 将y间隔1依次增加y_list = list(str(y + i))# 如果当前长度没有达到4,则往前加0if len(y_list) < 4:for k in range(4-len(y_list)):y_list.insert(0, '0')# 将y_list的元素依次加入digit的集合for j in y_list:digit.add(j)# 如果集合的长度,即不重复数字的个数等于规定的个数,退出循环if len(digit) == n:break# 控制将y间隔1依次增加i = i+1print(i, ''.join(y_list))
这篇关于L1-033 出生年 Python的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!