解题思路
首先,假设其中的分式通分后可以表示成
的形式。
进行完加法计算及通分后可得到最终的分式表达式为
由于,为了能够继续进行下一步的计算因此在for循环中有一个分子分母互换的步骤。
但最终返回的结果是,不需要进行下一步的计算,不需要在进行分子分母的互换。因此return时的结果分子分母顺序与for循环结束时的结果相反。
然后解释为何不需要约分
这里使用数学归纳法和反证法
令
假设第i+1项中
与
互质,
则第i项
假设第i项中分子与分母有不等于1的公因数c,则其分子分母分别可以表示为
联立两式可以得到,即
与
存在不等于1的公因数c,与之前它们互质的假设相悖,因此由反证法可得第i项中分子与分母互质。
根据数学归纳法可得的各项分子分母均互质,因此不需要约分。
代码
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]