AcWing 4807. 找数字 Python!!!!(第90场周赛)

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,欢迎一起学习交流!!!!!!!!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值