它以一个数字(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个包裹数目
任何帮助都会很好,谢谢。
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))这个函数什么也不返回,我在网站上找不到任何有帮助的东西。
发布于 2022-02-18 05:02:09
我不知道我说的对不对,我想你需要调用这个函数来查看输出?
https://stackoverflow.com/questions/71168535
复制相似问题