hdl 遇到了一个数学题:10000 元钱,一元钱可以买一瓶水,三个瓶盖可以换一瓶水,请问一共可以喝多少瓶水。死脑筋的 hdl 居然想要通过实践来得到答案,他还到处借钱凑齐 10000元。你决定帮他解出这个问题,为了 hdl 以后不再陷入这样的问题,你决定帮 hdl 写出一个通用程序:有n 元钱,一元钱可以买一瓶水,k 个瓶盖换一瓶水,一共可以喝到多少瓶水。
时间: 2023-03-20 11:08:00 浏览: 178
c程序问题:1元一瓶汽水,两个空瓶可以换一瓶,问20元可以喝多少瓶
这道题可以用数学方法解决,不需要实践。假设一开始有n元钱,可以买n瓶水。每喝一瓶水,就会得到一个瓶盖,当瓶盖数达到k个时,就可以换一瓶水。因此,每喝k瓶水,就会得到k个瓶盖,可以换成一瓶水。那么,总共可以喝到的水的数量就是:
n + n/k + n/k^2 + n/k^3 + ...
这是一个等比数列,可以用等比数列求和公式来计算。公式为:
S = a(1-q^n)/(1-q)
其中,a为首项,q为公比,n为项数。在这个问题中,a=n,q=1/k,n为无穷大。因为n为无穷大,所以当q<1时,公式才有意义。因此,k至少为2才有解。
将n和k代入公式,就可以得到总共可以喝到的水的数量。下面是通用程序的代码:
n = int(input("请输入n:"))
k = int(input("请输入k:"))
if k < 2:
print("k至少为2才有解")
else:
a = n
q = 1/k
S = a/(1-q)
print("总共可以喝到%d瓶水" % S)
阅读全文