LeetCode题解证明——第1517题 LCP 02. 分式化简

解题思路

首先,假设$f(i) = a_i + {1\over ...}$其中的分式通分后可以表示成$a_i + {n_i\over d_i}$的形式。

进行完加法计算及通分后可得到最终的分式表达式为{a_i * d_i + n_i\over d_i}

由于{n_{i-1}\over d_{i-1}} = {1\over f(i)},为了能够继续进行下一步的计算因此在for循环中有一个分子分母互换的步骤。

但最终返回的结果是$f(0)$,不需要进行下一步的计算,不需要在进行分子分母的互换。因此return时的结果分子分母顺序与for循环结束时的结果相反。

然后解释为何不需要约分

这里使用数学归纳法和反证法

f(i)={x_i\over y_i}=a_i+{1 \over f(i+1)}=a_i + {1\over {x_{i+1}\over y_{i+1}}} = a_i + {y_{i+1}\over x_{i+1}}

假设第i+1项f(i+1) = \frac{x_{i+1}}{y_{i+1}}$x_{i+1}$$y_{i+1}$互质,

则第i项$f(i) =a_i + {y_{i+1}\over x_{i+1}} = {a_i * x_{i+1} + y_{i+1} \over x_{i+1}}$

假设第i项中分子与分母有不等于1的公因数c,则其分子分母分别可以表示为

$a_i * x_{i+1} + y_{i+1} = l*c$

$ x_{i+1}=m*c$

联立两式可以得到y_{i+1} = (m-l*a_i)*c,即$x_{i+1}$$y_{i+1}$存在不等于1的公因数c,与之前它们互质的假设相悖,因此由反证法可得第i项中分子与分母互质。

根据数学归纳法可得f(n)的各项分子分母均互质,因此不需要约分。

 

代码



class Solution:

    def fraction(self, cont: List[int]) -> List[int]:

        numerator = 1

        denumerator = cont[-1]

        for i in range(len(cont)-1,0,-1):

            numerator, denumerator = denumerator, cont[i-1] * denumerator + numerator

        return [denumerator, numerator]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值