0

これは数値 (n) を引数として取り、次の 4 つの数値のタプルを返します。n 個のナゲットを販売するために必要なパッケージの総数、6 個のナゲットのパッケージの数、9 個のナゲットのパッケージの数、および 20 個のナゲットのパッケージの数。ナゲットの組み合わせを作成できない場合は、4 つのゼロのタプル (0,0,0,0) を返します。

特定の n に対して複数のソリューションが存在する可能性があることに注意してください。その場合、ソリューションでは、大きなパッケージの前に小さなパッケージが使用されるようにする必要があります。たとえば、buy_nuggets(18) は (2,0,2,0) ではなく (3,3,0,0) を返す必要があります。つまり、9 ピースの 2 箱に 6 ピースのナゲットが 3 箱含まれています。

この関数には入力フォーマット整数 (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