本题的要求很简单,就是求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. 【leetcode】54.Spiral Matrix

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  2. PAT L1 - 046 整除光棍

    https://pintia.cn/problem-sets/994805046380707840/problems/994805084284633088 这里所谓的“光棍”,并不是指单身汪啦~ 说的 ...

  3. java基础知识学习笔记

    本文知识点以js为参照.对比分析得出笔记.JavaScript之所以叫JavaScript是打算借助java推广自己.虽然都是开发语言,但JavaScript一开始主要运行在 客户端,而java主要运 ...

  4. 7. 由一道ctf学习变量覆盖漏洞

    0×00 背景 近期在研究学习变量覆盖漏洞的问题,于是就把之前学习的和近期看到的CTF题目中有关变量覆盖的题目结合下进一步研究. 通常将可以用自定义的参数值替换原有变量值的情况称为变量覆盖漏洞.经常导 ...

  5. PHP 多文件打包下载 zip

    <?php $zipname = './photo.zip'; //服务器根目录下有文件夹public,其中包含三个文件img1.jpg, img2.jpg, img3.jpg,将这三个文件打包 ...

  6. React Native 学习-组件说明和生命周期

    组件的详细说明(Component Specifications) 当通过调用 React.createClass() 来创建组件的时候,你应该提供一个包含 render 方法的对象,并且也可以包含其 ...

  7. 洛谷P2894[USACO08FEB]酒店Hotel(线段树)

    问题描述 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 <= N & ...

  8. CF1093F Vasya and Array DP

    题面 题面 \(\Delta\)题面有点问题,应该是数列中没有长度大于等于\(len\)的连续数字才是合法的. 题解 设\(f[i][j]\)表示DP到\(i\)位,以\(j\)为结尾的方案数, \( ...

  9. Java SSM 整合

    从2012年的“用户标签”到2014年的“用户画像”,从2015年的“大数据”到2017年的“人工智能”,大数据正在从神坛走向现实.“标签”到“画像”,代表着数据在数量和维度上,逐渐在丰富:“大数据” ...

  10. HDU3507 print article【斜率优化dp】

    打印文章 时间限制:9000/3000 MS(Java / Others)内存限制:131072/65536 K(Java / Others) 总共提交:14521已接受提交:4531 问题描述 零有 ...