0

将数字 (n) 作为参数并返回四个数字的元组;销售n个金块所需的包总数、6块块的包数、9块块的包数和20块块的包数。如果无法进行块组合,则返回四个零的元组,即 (0,0,0,0)。

请注意,对于给定的 n,可以有多个解决方案,那么您的解决方案应确保在使用较大的包之前使用较小的包。例如,buy_nuggets(18) 应该返回 (3,3,0,0) 而不是 (2,0,2,0),即 3 盒 6 块金块超过 2 盒 9 块。

此函数具有输入格式整数 (n) 和限制 -10^6<=a,b,c,n<=10^6

输出格式将是 4 个数字 (d,a,b,c) 的元组,其中

d = 包裹总数
a - 6 个包裹
数量 b - 9 个包裹
数量 c - 20 个包裹数量

任何帮助都会很棒,谢谢。

def nugget_boxes(n): 
    def extended_nuggets(m,n):
        assert m>=n and n>=0 and m+n>0
        if n==0:
            d,x,y= m,1,0
        else:
            (d,p,q)=extended_gcd(n,m%n)
            x=q
            y=p-x*(m//n)
        assert m%d==0 and n%d==0
        assert d==m*x + n*y
        return(d,x,y)
    
    def diophantine(a,b,c,d):
        if a>b and c and d:
            q=extended_nuggets(a,b,c,d)
            a1=q[1]
            b1=q[2]
            c1=q[3]
            d1=q[4]
        if b>a and c and d:
            q=extended_nuggets(a,b,c,d)
            a1=q[2]
            b1=q[1]
            c1=q[3]
            d1=q[4]
        if c>a and b and d:
            q=extended_nuggets(a,b,c,d)
            a1=q[3]
            b1=q[1]
            c1=q[2]
            d1=q[4]
            
        else:
            q=extended_nuggets(a,b,c,d)
            a1=q[4]
            b1=q[1]
            c1=q[2]
            d1=q[3]
        assert c%q[0]==0
        d=q[0]
        p=c/d
        return nugget_boxes(int(p*x1),int(p*y1), int(p*z1))

这个函数什么都不返回,我在网站上找不到任何有用的东西

4

1 回答 1

0

我不知道我是否正确,我认为您需要调用该函数才能查看输出?

于 2022-02-18T05:02:09.690 回答