首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >丢番图方程

丢番图方程
EN

Stack Overflow用户
提问于 2022-02-18 04:54:00
回答 1查看 91关注 0票数 0

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

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

该函数具有输入格式Integer (n)和限制-10^6<=a、b、c、n<=10^6

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

D=包裹总数

A-6个包裹的数目

B-9个包裹数目

C-20个包裹数目

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

代码语言:javascript
复制
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))

这个函数什么也不返回,我在网站上找不到任何有帮助的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-18 05:02:09

我不知道我说的对不对,我想你需要调用这个函数来查看输出?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71168535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档