Python 代码(注释版)
m, s = map(int, input().split())
# 再存一个s,因为要用两遍
ss = s
# 开两个列表,放最大最小值
a = [0] * m
b = [0] * m
# 特判:无解情况
if s > 9 * m or s == 0 and m > 1:
print(-1, -1)
else:
for i in range(m - 1, 0, -1): # 最小值,从最低位开始遍历,让低位尽可能大
b[i] = min(9, ss - 1) # 为避免前导零,在ss-1里选,给最高位留一个1先
ss -= b[i]# 用了的数就在总和里减掉
b[0] += ss # 循环内给其余为赋值,循环外单独给最高位赋值(剩下的都是最高位的)
ans = "".join(map(str, b)) # 运用map和join,将列表转换成字符串,并将其元素无缝连接起来
print(ans, end=" ") # 输出最小值,别忘了end = " ",因为要在同一行输出
for i in range(m): # 最大值,从最高位开始遍历,让高位尽可能大
a[i] = min(9, s) # 无前导零威胁,s不用减1
s -= a[i] # 用了的数就在总和里减掉
ans = "".join(map(str, a)) # 同理
print(ans)
Python 代码(纯享版)
m,s = map(int,input().split())
ss = s
a = [0]*m
b = [0]*m
if s>9*m or s==0 and m>1:
print(-1,-1)
else:
for i in range(m-1,0,-1):
b[i] = min(9,ss-1)
ss-=b[i]
b[0] += ss
ans = "".join(map(str,b))
print(ans,end=" ")
for i in range(m):
a[i] = min(9,s)
s-=a[i]
ans = "".join(map(str,a))
print(ans)
个人感觉这篇Python代码还是比较简洁的,如有更好改进方法或者不懂的,欢迎在评论区讨论
Python菜鸟,qq:240706386,欢迎一起学习交流!!!!!!!!!!