可能有一种算法,但我不确定它是什么。
对于一个整数X,其和为X的整数的最少数量是多少,其中求和的整数小于或等于Y,并且可以在和中重复。
例如:
X=95
Y=1
This is 1 (95 times)
X=39
Y=5
This is 5 (7 times) and 4 (1 time)
X=53
Y=11
This is 11 (4 times), 9 (1 time)
我看到这是一种递归地划分值,同时减少分母直到达到零,但可能有一种更优雅的方法。
更新:
两件事:
- 我没有意识到这不会需要超过1个级别的划分。我假设可能存在分子/分母的组合,在第二次除法后会有余数,但至少在我的用例中,没有
- 不,没有什么Python特定的,它只是我使用的
您可以使用divmod()
来获得商和余数:
X = 95
Y = 1
quotient, remainder = divmod(X, Y)
if remainder == 0:
print(f"This is {Y} ({quotient} times)")
else:
print(f"This is {Y} ({quotient} times) and {remainder} (1 time)")
此打印:
This is 1 (95 times)
X=int(input("What is X"))
Y=int(input("What is Y"))
divisor = X // Y # integer divide
remainder = X % Y
if remainder:
print(f"This is {Y} ({divisor} times), {remainder}")
else:
print(f"This is {Y} ({divisor} times)")
您所要求的是将一个数字划分为另一个数字,并提供余数。
使用//
运算符将对两个数字进行除法运算,返回一个整数。%
运算符将在对两个数字进行除法时提供余数。
def div(x, y):
return x//y, x%y
x = 95
y = 15
count, remainder = div(x, y)
text = 'This is {} ({} times)'.format(x, count)
if remainder > 0:
text += ' and {} ({} times)'.format(remainder, 1)
print(text)