力扣分式化简

2024-02-05 19:04
文章标签 化简 扣分

本文主要是介绍力扣分式化简,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述:

有一个同学在学习分式。他需要将一个连分数化成最简分数,你能帮助他吗?

连分数是形如上图的分式。在本题中,所有系数都是大于等于0的整数。

输入的cont代表连分数的系数(cont[0]代表上图的a0,以此类推)。返回一个长度为2的数组[n, m],使得连分数的值等于n / m,且n, m最大公约数为1。

示例 1:

输入:cont = [3, 2, 0, 2]
输出:[13, 4]
解释:原连分数等价于3 + (1 / (2 + (1 / (0 + 1 / 2))))。注意[26, 8], [-13, -4]都不是正确答案。

示例 2:

输入:cont = [0, 0, 3]
输出:[3, 1]
解释:如果答案是整数,令分母为1即可。

代码:

class Solution {public int[] fraction(int[] cont) {// 分母,count中最后的那个数int n = cont[cont.length - 1];// 分子int m = 1;// i要从倒数第二个开始所以是 i - 2for(int i = cont.length - 2;i >= 0;i --) {// 暂存分母int tmp = n;// 重新计算分分母// 所有加上的那个分数分子都是1,保证了a2*a3+1/a3互为质数就是最简的了,// 所以不用化简n = cont[i] * n + m;// 重新计算分子m = tmp;}// 最后输出结果是{n,m}而不是{m,n}// 因为n = cont[i] * n + m; m = tmp;这两步相当于在调换分子和分母// 当是count[i]是a0项时,是不需要互换的,// 所以输出{n,m}相当于又调换了一次顺序,相当于是调换了两次顺序// 调换两次就是分子分母不变return new int[] {n,m};}
}

 要点提醒:题目中说n,m最大公约数是1,意思是说答案的分子和分母不能够再进行约分。

而每一项count[i]系数加上后面的分数,而后面的分数分子都是1。

就是说系数+分数通分以后=系数*分母+1/分母。

又因为系数*分母+1这一步加了一个1,再除分母的时候就保证了系数*分母+1和分母互为质数。

这篇关于力扣分式化简的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681865

相关文章

深入剖析:中国国际大学生创新大赛中不可忽视的12个扣分点

深入剖析:中国国际大学生创新大赛中不可忽视的12个扣分点 前言1. 项目名称:第一印象的力量2. 项目逻辑:清晰的思路是关键3. 问题分析:深入挖掘痛点4. 需求分析:解决方案的导向5. 科研课题与评审维度的匹配6. 团队介绍:突出团队成员的贡献7. 教育和社会价值:项目的灵魂8. 项目案例:实践是检验真理的唯一标准9. 创新点:项目的独特卖点10. 发展规划:展示项目的潜力11. PPT制

CCF CSP题解:因子化简(202312-2)

链接和思路 OJ链接:传送门。 问题重述 本题基于一个基本事实,即任何一个大整数 n n n都可以唯一地分解为如下形式 n = p 1 t 1 × p 2 t 2 × ⋯ × p m t m n = p_1^{t_1} \times p_2^{t_2} \times \cdots \times p_m^{t_m} n=p1t1​​×p2t2​​×⋯×pmtm​​其中, p 1 , p 2

【CSP】因子化简_(问题分析,过程拆解,方案构建)

一、问题背景与任务概述 在因子化简问题中,我们需要对给定的多个整数进行质因数分解,并根据题目要求的条件,计算出特定的因子并输出。这类问题在编程竞赛中十分常见,尤其是涉及大数处理时,如何高效地进行质因数分解并输出结果是一个关键点。 任务: 对每个输入的整数 n 进行质因数分解。根据质因数的分解结果,计算并输出满足条件的因子。 本文将通过详细的代码注释,逐步讲解如何实现这一任务,并分析其中的关

CCF-CSP真题《202312-2 因子化简》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202312-2试题名称:因子化简时间限制:2.0s内存限制:512.0MB问题描述: 题目背景 质数(又称“素数”)是指在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的自然数。 问题描述 小 P 同学在学习了素数的概念后得知,任意的正整数 n 都可以唯一地表示为若干素因子相乘的形式。如果正整

SHOPEE虾皮卖家怎么计分及罚分扣分规则

在当今快速发展的电子商务时代,Shopee虾皮作为东南亚及台湾地区领先的电商平台,为广大卖家提供了一个广阔的市场和无限的商机。然而,为了维护平台的公平性和买家的购物体验,Shopee虾皮实行了一套严格的卖家计分系统及相应的罚分/扣分规则。本文将深入探讨这一系统的具体运作机制,包括如何进入和查看卖家计分系统、计分的产生依据、不同违规行为对应的计分标准、累积计分后可能面临的处分措施,以及如何进行罚分申

matlab函数化简和函数极限

文章目录 化简求函数极限泰勒公式泰勒公式求解 化简 simplify 函数是MATLAB中符号计算工具箱提供的一个函数,用于简化数学表达式。它可以根据预定义的简化规则,对给定的数学表达式进行简化和转化。 以下是simplify 函数的一些常用用法: 简化表达式: simplify 函数可以对各种数学表达式进行简化,包括多项式、三角函数、指数函数等。例如,要简化表达式 si

因子化简——CSP认证题目

问题描述 小 P 同学在学习了素数的概念后得知,任意的正整数 n都可以唯一地表示为若干素因子相乘的形式。如果正整数 n有m 个不同的素数因子 p 1 , p 2 , … , p m p_1, p_2, \ldots, p_m p1​,p2​,…,pm​,则可以表示为: n = p 1 t 1 ⋅ p 2 t 2 ⋅ p 3 t 3 ⋯ p m t m n = p_1^{t_1} \cdot p_

2. 分式化简

最大公约数 注意:输出之间的分子分母不用交换 class Solution {public:int gcd(int a, int b){if(b == 0) return a;return gcd(b, a%b);}vector<int> fraction(vector<int>& cont) {int t = 1;int n = cont.size();int u = cont[n-1];

简单数学问题之分数的表示与化简

分数的化简 #include <iostream>#include <cmath>//调用abs函数using namespace std;int divide(int a,int b){if(b==0) return a;else return divide(b,a%b);}struct fraction{int up;//分子int down;//分母}result;fract

递推化简+线段树区间维护,P6477 [NOI Online #2 提高组] 子序列问题

一、题目 1.1题目背景 2s 512M 1.2题目描述 给定一个长度为 n n n 的正整数序列 A 1 A_1 A1​, A 2 A_2 A2​, ⋯ \cdots ⋯, A n A_n An​。定义一个函数 f ( l , r ) f(l,r) f(l,r) 表示:序列中下标在 [ l , r ] [l,r] [l,r] 范围内的子区间中,不同的整数个数。换句话说, f