L1-009 N个数求和

news/2024/7/1 3:06:19

题目

本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入格式:
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出格式:
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

题解
大致思路就是一个数组存放分子部分,一个数组存放分母部分,求出分母的最小公倍数,对分数进行通分。
最后输出的是要最简形式。
输入的时候,scanf("%d/%d",&a[i],&b[i]);

代码

#include<iostream>
#include<cmath>
#include<stdio.h>
using namespace std;
//求最大公约数的函数 
long gcd(long a,long b){return a%b==0 ? b:gcd(b,a%b);
}int main(){int N;cin>>N;int a[100];//分子 int b[100];//分母long s1=0;//分子的和 long s2=0; //最小公倍数,最后的分母,长整型注意是//输入要求和的数据for(int i=0;i<N;i++){scanf("%d/%d",&a[i],&b[i]);} //求分母的最小公倍数s2=b[1];for(int i=1;i<N;i++){s2=s2*b[i]/gcd(s2,b[i]);}//分数通分之后求分子的和 for(int i=0;i<N;i++){s1=s1+s2/b[i]*a[i];}long long n=s1/s2,m=abs(s1%s2);if(m==0){//余数为零,说明结果是整数cout<<n<<endl; }else{//余数不为零,结果有分数 //分数前面的整数部分 if(n!=0){cout<<n<<" ";}//分子的和是负数 if(s1<0){cout<<"-";} //输出结果的最简形式 cout<<m/gcd(s2,m)<<"/"<<s2/gcd(s2,m); }return 0;
} 

http://lihuaxi.xjx100.cn/news/240424.html

相关文章

Rushcrm:企业部署CRM系统做什么

现在很流行的一个词就是大数据&#xff0c;很多企业开始重视数据的开发利用。CRM在这样的环境背景下诞生了&#xff0c;但这并不意味着所有的企业都能很好的利用好CRM系统(客户关系管理系统)。CRM带来的效益是显而易见的&#xff0c;但是购置了CRM系统仅仅是第一步&#xff0c;…

Oracle笔记 六、PL/SQL简单语句块、变量定义

1、简单SQL语句&#xff0c;HellWorld示例 --输出信息 begin dbms_output.put_line(Oracle Hello World!); end; 2、变量的定义、使用 --定义变量 declare sName varchar2(20); begin sName : jack; dbms_output.put_line(sName); end; --常用类型 declare sNum number(1); sCo…

谈论源码_6,000名自由职业者谈论金​​钱,幸福和对未来的希望

谈论源码More than 6,000 US-based freelancers responded to a new in-depth survey. I dug through the data and pulled out the most interesting insights, which paint a picture of optimistic professionals who have taken control of their own destiny.超过6,000名美…

idea打开web项目之后一直闪烁

解决办法&#xff1a; 点击&#xff0c; 选择第一个&#xff08;清除缓存并重启&#xff09; 这时Idea会自动重新启动&#xff0c;之后就没有闪烁的状态了。 一开始我选择是第二个&#xff0c;清除无效的缓存&#xff0c;但是并没有起作用。

Wink发布Wink Hub2家庭物联网控制中心

智能家居主要厂商之一Wink宣布推出Wink Hub2家庭物联网控制中心&#xff0c;支持更多的家庭物联网产品&#xff0c;更广泛的互联互通&#xff0c;以及提供更好用的控制程序。Wink Hub2主要作用是连接第三方家庭物联网产品&#xff0c;并从一个集中的应用程序进行控制。 Wink Hu…

矢量数编码有哪几种类型_6种最理想的编码工作(以及吸引每个人的类型)

矢量数编码有哪几种类型by David Venturi大卫文图里(David Venturi) 6种最理想的编码工作(以及吸引每个人的类型) (The 6 most desirable coding jobs (and the types of people drawn to each)) Free Code Camp问了15,000个人&#xff0c;他们是谁&#xff0c;以及他们如何学…

基于tcp和udp的socket实现

2019独角兽企业重金招聘Python工程师标准>>> 本文介绍如何用Java实现Socket编程。首先介绍Java针对Socket编程提供的类&#xff0c;以及它们之间的关系。然后分别针对TCP和UDP两种传输层协议实现Socket编程。 1 Java中的Socket编程接口介绍 Java为Socket编程封装了几…

保护到云端的高速公路

如今&#xff0c;越来越多的业务和个人信息都存储在云计算中&#xff0c;因此&#xff0c;确保快速可靠地访问这些信息变得比以往任何时候都更加重要。电信服务提供商有强大的财政激励&#xff0c;提供一系列服务&#xff0c;可以与那些只能通过有线提供服务的厂商进行竞争。换…