1081. Rational Sum (20)

简介: 1081. Rational Sum (20)

20201230173427514.png

算法思想:

①numerator接收分子,denominator接收分母;每次根据分母求最小公倍数l,然后分母通分累加到sum上。遍历结束后sum是分母,l是分子。

②碾转相处法求最大公约数,分子分母一起除公约数(绝对值),然后分子分母约分输出。

#include<iostream>
using namespace std;
long long gcd(long long a, long long b)
{
  return b == 0 ? a : gcd(b, a % b);//gcd(a,b) = gcd(b,a % b)   0的最大公约数就是另一个数
}
long long lcm(long long a, long long b) {//两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b
  if (a == 0 || b == 0) {
    return 0;
  }
  return a * b / gcd(a, b);
}
int main(){
    int n;
    cin>>n;
    long long numerator;//接收分子
    long long denominator;//接收分母
    long long l=1;//最小公倍数
    long long m=1;//倍数
    char c;//接收‘/’除号
    long long sum=0;
    for(int i=0;i<n;i++){
        cin>>numerator>>c>>denominator;
        long long last=l;
        l=lcm(l,denominator);
        c=l/denominator;
        sum*=(l/last);
        sum+=c*numerator;
    }
    long long res1=sum/abs(gcd(sum,l));
    long long res2=l/abs(gcd(sum,l));
    if(res1/res2){
        cout<<res1/res2;
        if(res1-(res1/res2)*res2)
            cout<<" "<<res1-(res1/res2)*res2<<"/"<<res2;
        cout<<endl;
    }else if(res1==0){
        cout<<0<<endl;
    }
    else{
        cout<<res1<<'/'<<res2<<endl;
    }
}
相关文章
|
安全 JavaScript Java
汉服|高校汉服租赁网站|基于Springboot的高校汉服租赁网站设计与实现(源码+数据库+文档)
汉服|高校汉服租赁网站|基于Springboot的高校汉服租赁网站设计与实现(源码+数据库+文档)
500 0
|
运维 网络安全 Python
自动化运维:使用Ansible实现批量服务器配置
在快速迭代的IT环境中,高效、可靠的服务器管理变得至关重要。本文将介绍如何使用Ansible这一强大的自动化工具,来简化和加速批量服务器配置过程。我们将从基础开始,逐步深入到更复杂的应用场景,确保即使是新手也能跟上节奏。文章将不包含代码示例,而是通过清晰的步骤和逻辑结构,引导读者理解自动化运维的核心概念及其在实际操作中的应用。
|
12月前
|
调度
MindIE对接vLLM框架开发指南
vLLM对接MindIE,使能快速迁移到昇腾设备上,当前MindIE 1.0.0发布版本已支持多种三方框架。
|
前端开发 JavaScript 搜索推荐
一文 Next / React / SSR / SSG / CSR 扫盲
一文 Next / React / SSR / SSG / CSR 扫盲
568 6
|
JavaScript Ubuntu 应用服务中间件
如何在Ubuntu20.04上配置Nginx以及使用Nginx部署一个网站
本文主要介绍了关于如何部署Ubuntu环境下的网站,给出一种示例。
如何在Ubuntu20.04上配置Nginx以及使用Nginx部署一个网站
|
JavaScript 安全 前端开发
错误处理:在Vue中捕获和处理异常
【4月更文挑战第24天】Vue.js开发中,错误和异常处理对于保持用户体验和应用稳定性至关重要。Vue提供`errorCaptured`钩子函数,可在组件及其子组件中捕获错误,通过参数进行处理。例如,在`App`组件中定义`errorCaptured`,调用自定义`handleError`方法记录错误。此外,可使用`try...catch`处理异步错误,全局错误处理则可通过`Vue.config.errorHandler`设置。结合这些机制,开发者能有效管理错误,提升应用的稳定性和易维护性。
646 7
|
数据管理 数据挖掘 API
DingTalk「开发者说」钉钉连接平台,在宜搭场景下如何使用钉钉连接器
钉钉连接平台通过简单的低代码配置,帮助企业迅捷实现系统集成和连接,降低集成实施的周期和成本。本文主要介绍在宜搭场景下如何使用钉钉连接器。
4713 0
DingTalk「开发者说」钉钉连接平台,在宜搭场景下如何使用钉钉连接器
|
前端开发
ant design upload实现多个文件一次上传(全网首发)
ant design upload实现多个文件一次上传(全网首发)
1621 0
|
机器学习/深度学习 开发框架 算法
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文,计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
8910 0
计算机专业毕业设计题目汇总-最新题目 选题 推荐 毕业设计 - 毕设指导 开题报告 论文
|
传感器 算法 定位技术
IMU预积分在优化问题中的建模及外参标定
预积分量约束相邻两帧的状态量(位置、速度、姿态),同时考虑到IMU的零偏的性质,即短时间内变换速率比较慢,因此可以认为两帧之间的零偏不变,也就是还可以约束两帧的零偏变换。 同时,在slam问题中,IMU预积分通常会和其它传感器的约束一起构建一个优化问题 无论是VIO还是LIO,IMU和其它传感器的标定结果往往对最终的里程记和建图性能有着显著的影响。同样,在多传感器融合算法中,传感器之间的标定结果的精度对多传感器融合的效果也有着非常大的影响。 在lidar-imu融合的算法中,lidar和IMU之间的外参标定非常重要,在一些数据集上往往有着经过良好标定的结果,然而,绝大多数情况下,或者实际
IMU预积分在优化问题中的建模及外参标定