本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式。

输入格式:

输入第一行给出一个正整数N(<=100)。随后一行按格式“a1/b1 a2/b2 ...”给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

输出格式:

输出上述数字和的最简形式 —— 即将结果写成“整数部分 分数部分”,其中分数部分写成“分子/分母”,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

输入样例1:

5

2/5 4/15 1/30 -2/60 8/3

输出样例1:

3 1/3

输入样例2:

2

4/3 2/3

输出样例2:

2

输入样例3:

3

1/3 -1/6 1/8

输出样例3:

7/24

题目分析:

对于分数求和,我们首先要注意道德一点就是分数必须是同分母的分数才能够进行求和运算,所以我们要求出所有分母的最小公倍数。两个数的最小公倍数可以通过他们的最大公约数求得(最小公倍数=连个数的乘积/最大公约数),然后根据每一个分数的分母扩大的比例,将分子也扩大相同的倍数求和。但是这样得到的分数并不一定是最简形式,还要将分数进行通分,分子分母同时除以最大公约数。这样求得的分数如果是假分数的话还要转化为相应的真分数形式。

代码:

    #include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
//gcd()函数,作用主要为求两个数的最大公约数 long long int gcd(long long int m,long long int n)
{
long long int r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
return n;
}
int main()
{
long long int n;
long long int x[103];
long long int y[103];
while(~scanf("%lld",&n))
{
if(n==0)//如果输入的分数的个数为0的话,最后输出的结果也肯定为0
{
printf("0\n");
}
else
{
long long int max1=0;
long long int op=1;//因为要求所有坟墓的最小公倍数,所以让1与第一个分母求公约数
long long int po;
for(long long int i=0;i<n;i++)
{
scanf("%lld/%lld",&x[i],&y[i]);
po=gcd(op,y[i]);//两个数的最大公约数
max1=op*y[i]/po;//两个数的最小公倍数
op=max1;//op表示的是与当前值求公约数的另一个,初始值为1
} long long int m=0,sum=0,sum1=0;
for(long long int i=0;i<n;i++)
{
m=max1/y[i];//分母扩大的倍数
sum+=x[i]*m;//分子和
}
sum1=max1;
long long int gong=gcd(sum,sum1);//最终的分数要约分
sum=sum/gong;
sum1=sum1/gong;
long long int Zheng =sum/sum1;//分数的整数部分
if(sum-sum1*Zheng==0)
printf("%lld\n",Zheng);//分数只有整数部分的话,直接把整数部分输出来就行
else
{
if(Zheng==0)
{
printf("%lld/%lld\n",sum,sum1);
}
else
printf("%lld %lld/%lld\n",Zheng,sum-Zheng*sum1,sum1);
}
}
}
return 0;
}

天梯赛 L1-009 N个数求和 (模拟)的更多相关文章

  1. PTA 天梯赛 L1

    L1-002 打印沙漏 细节:就是在  (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环   for(r=1; ;r+=2)  条件不满足之后还会再 ...

  2. 天梯赛L1 题解

    L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...

  3. PAT L1-009 N个数求和(模拟分数加法)

    本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(<=100).随后一行按格 ...

  4. PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)

    Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...

  5. 天梯赛 L1-058 6翻了

    传送门:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599408664577 这道字符串题,只是天梯赛L1的题, ...

  6. 团体程序设计天梯赛-练习集L1-009. *N个数求和

    L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...

  7. PAT L1 049 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  8. PAT团体程序设计天梯赛 - 模拟赛

    由于本人愚笨,最后一题实在无力AC,于是只有前14题的题解Orz 总的来说,这次模拟赛的题目不算难,前14题基本上一眼就有思路,但是某些题写起来确实不太容易,编码复杂度有点高~ L1-1 N个数求和 ...

  9. 『ACM C++』 PTA 天梯赛练习集L1 | 052-053

    今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...

  10. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

随机推荐

  1. C#控件之Repeater控件使用

    歡迎大家來討論,修改,一定虛心接受. 1.為什麼使用Repeater控件? 關於把從數據庫讀取的數據綁定到前台頁面,我們可以使用DataGrid.DataGridView以及Repeater來佈局,三 ...

  2. 1st 英文文章词频统计

    英文文章词频统计: 功能:统计一篇英文文章的单词总数及出现频数并输出,之后排序,输出频数前十的单词及其频数. 实现方法:使用C语言,用fopen函数读入txt文件,fscanf函数逐个读入单词,结构体 ...

  3. Hive查看执行日志

    HIVE-如何查看执行日志 HIVE既然是运行在hadoop上,最后又被翻译为MapReduce程序,通过yarn来执行.所以我们如果想解决HIVE中出现的错误,需要分成几个过程 HIVE自身翻译成为 ...

  4. Hibernate学习--hibernate延迟加载原理-动态代理(阿里电面)

    在正式说hibernate延迟加载时,先说说一个比较奇怪的现象吧:hibernate中,在many-to-one时,如果我们设置了延迟加载,会发现我们在eclipse的调试框中查看one对应对象时,它 ...

  5. Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖

    Struts按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖

  6. CF337D-Book of Evil

    题目 一棵树上有一个古籍,这个古籍可以影响到与它距离为 \(d\) 以内的点.现在给出被影响到的点,问古籍可能在多少个点上. \(0\le m,d\le n\le 10^5\). 分析 原问题不好做, ...

  7. NHibernate 设置主键不自增长

    1.Model 配置 [PrimaryKey(PrimaryKeyType.Assigned,"ID")] 2.使用时要手动赋值

  8. 导航控制器里边添加UIScrollView (automaticallyAdjustsScrollViewInsets)

    导航控制器里边如果添加UIScrollView会导致放大操作异常怪异,此时设置 self.automaticallyAdjustsScrollViewInsets = false

  9. 【SPOJ】QTREE6(Link-Cut-Tree)

    [SPOJ]QTREE6(Link-Cut-Tree) 题面 Vjudge 题解 很神奇的一道题目 我们发现点有黑白两种,又是动态加边/删边 不难想到\(LCT\) 最爆力的做法,显然是每次修改单点颜 ...

  10. oracle 远程登录sqlplus TNS:无监听

    1.将localhost 改成 计算机名 best-PC,或者ip地址 .  我修改成计算机名,因为经常在无线网络和有限网络之间切换 SID_LIST_LISTENER =  (SID_LIST =  ...