You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求每次递增(c)%的(a)美元可计入(b)美元的次数计算公式

求解递增计入次数的公式推导

嘿,咱们一步步拆解这个问题,把公式推导明白!先明确问题里的核心变量,方便后续梳理:

  • 初始计入金额:a 美元(比如你例子里的1美元)
  • 总可用金额:b 美元(例子里的100美元)
  • 每次计入金额的递增比例:c%,咱们把它转化为增长率 r = 1 + c/100(比如1%的话,r = 1.01
  • 目标:找到最大的整数n,使得前n次计入的总金额不超过b

核心思路:等比数列求和

每次计入的金额是一个等比数列:第一次是a,第二次是a*r,第三次是a*r²,……,第n次是a*rⁿ⁻¹。我们需要保证前n项的和 ≤ b

等比数列前n项和的标准公式是:

Sₙ = a * (rⁿ - 1) / (r - 1)

推导求解n的公式

我们需要解不等式 Sₙ ≤ b,代入求和公式后一步步整理:

  1. 代入公式得到基础不等式:
    a * (rⁿ - 1) / (r - 1) ≤ b
    
  2. 两边乘以(r-1)(因为r>1r-1是正数,不等号方向不变):
    a*(rⁿ - 1) ≤ b*(r - 1)
    
  3. 两边除以a,再移项整理:
    rⁿ ≤ [b*(r - 1)/a] + 1
    
  4. 对两边取自然对数(用常用对数也可以,只要统一就行):
    n * ln(r) ≤ ln( [b*(r - 1)/a] + 1 )
    
  5. 因为r>1ln(r)是正数,两边除以它不等号方向不变:
    n ≤ ln( [b*(r - 1)/a] + 1 ) / ln(r)
    

最后,n就是这个计算结果的向下取整(取不超过该值的最大整数)——毕竟次数必须是整数,还得保证总计入金额不超过b


验证例子

用你给的测试场景验证:a=1b=100c=1%(即r=1.01

  1. 计算[b*(r-1)/a] +1 = [100*0.01/1]+1 = 2
  2. 计算ln(2)/ln(1.01) ≈ 0.6931 / 0.00995 ≈ 69.67
  3. 向下取整得到n=69

实际验证:前69次的总金额是1*(1.01^69 -1)/0.01 ≈ 99.98美元,刚好不超过100;如果取70次,总金额约为101.97美元,超过了上限,完全符合预期。


特殊情况处理

  • 如果a > b:那一次都无法计入,直接得n=0
  • 如果c=0(即每次计入金额不变):此时r=1,等比数列求和公式退化为Sₙ = n*a,解n*a ≤bn = floor(b/a),用上面的对数公式也能得到一致结果(当r→1时,ln(r)≈r-1ln(1 + b*(r-1)/a)≈b*(r-1)/a,两者相除就是b/a,向下取整后完全匹配)

内容的提问来源于stack exchange,提问作者MitchellNZ

火山引擎 最新活动