Python 1-9构成3个成加和关系的三位数的计算

题目:将1到9共9个数字构成3个3位数,刚好占用完1-9这九个数字。即:x+y=z(x,y,z均为>=100且<1000的三位数。且x,y,z刚好用完1到9这9个数字).

我的思路。按照不重复的情况,假定x<y。则x<y<x+y=z<1000。2*x<x+y<1000,那么x<500的。我先抽取x这个三位数。

def xint():
    s=[]
    for i in range(1,5):
        for j in range(1,10):
            for k in range(1,10):
                if i!=j and j!=k and i!=k:
                    s.append([i,j,k])

然后在1-9里面排除掉x里面的三个数,就从剩下的6个里面抽第二个三位数y。函数里的n代表第一个数x的3位数的list.

def yint(n:list):
    s=[]
    for i in range(n[0]+1,9):
        for j in range(1,10):
            for k in range(1,10):
                if i!=j and j!=k and i!=k and len({i,j,k}& set(n))==0:
                    s.append([i,j,k])

x+y都抽完了,那么z没得抽了。剩余3个数固定了,只能做数学排序了。最后检验x+y==z是否成立就可以返回结果了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值