我有一个问题如下: 你能帮我解决这个问题吗?
输入 = 整数 N
找到两个数字,比如 x 和 y,使得 x 和 y 的乘积大于或等于 N,并且 x 和 y 的和应该是最小的。
输出: x 和 y 的最小总和。
我使用过这段代码,它在某些情况下有效,但在某些情况下不起作用。
Nt = [528,576,2673]
def Min(N):
a = int(N**0.5)
if a^2==N:
return 2*a-1
elif a*(a+1)>=N:
return 2*a+1
else:
return 2*a+2
for i in range(3):
N = Nt[i]
print(Min(N))
对于上面的例子,输出应该是[48, 104, 28]
答案 0 :(得分:1)
python 中的幂运算是 **
标记,正如您在 a
的定义中使用的那样。
def Min(N):
a = int(N**0.5)
if a**2==N:
return 2*a
elif a*(a+1)>=N:
return 2*a+1
else:
return 2*a+2
它修复了。
另外,请注意您的示例已损坏,您没有定义 Nt
答案 1 :(得分:0)
n = int(input())
def func(n):
for sum in range(n):
for x in range(sum):
for y in range(sum):
if x * y >= n:
return x + y
print(func(n))
# For n = 2673 output not correct 28, because 28**2 only 784 and lower than 2673