/*======================================================
1006:分数求和
总时间限制: 1000ms 内存限制: 65536kB
描述
输入n个分数并对他们求和,用约分之后的最简形式表示。
比如:
q/p = x1/y1 + x2/y2 +....+ xn/yn,
q/p要求是归约之后的形式。
如:5/6已经是最简形式,3/6需要规约为1/2, 3/1需要规约成3,10/3就是最简形式。 PS:分子和分母都没有为0的情况,也没有出现负数的情况 输入
第一行的输入n,代表一共有几个分数需要求和
接下来的n行是分数
输出
输出只有一行,即归约后的结果
样例输入
2
1/2
1/3
样例输出
5/6 解析:这个题呢,主要是要注意最后输出时分母可能是1.
另外,这里保证了输入的分子和分母都没有0和负数,所以处理简单化了。
========================================================*/
#include<stdio.h>
struct fraction
{
int a,b;//分数a/b的分子和分母
};
int Gcd(int a,int b);//返回a和b的最大公约数
int Lcm(int a,int b);//返回a和b的最小公倍数
int main()
{
int n,i,d;
struct fraction f1,f2;
char c;
//freopen("3.in","r",stdin);
scanf("%d",&n);
scanf("%d%c%d",&f2.a,&c,&f2.b);
d=Gcd(f2.a,f2.b);
if(d>)
{
f2.a=f2.a/d;
f2.b=f2.b/d;
}
for(i=;i<=n;i++)
{
scanf("%d%c%d",&f1.a,&c,&f1.b);
d=Lcm(f2.b,f1.b);
f2.a=f2.a*d/f2.b+f1.a*d/f1.b;
f2.b=d;
d=Gcd(f2.a,f2.b);
if(d>)
{
f2.a=f2.a/d;
f2.b=f2.b/d;
}
}
if(f2.b>)
printf("%d/%d\n",f2.a,f2.b);
else
printf("%d\n",f2.a);
return ;
}
int Gcd(int a,int b)
{
int c;
if(a<=||b<=) return -;
if(a<b)
{
c=a;
a=b;
b=c;
}
c=a%b;
while(c!=)
{
a=b;
b=c;
c=a%b;
}
return b;
}
int Lcm(int a,int b)
{
int c;
if(a<=||b<=) return -;
c=Gcd(a,b);
return a*b/c;
}

OpenJudge计算概论-分数求和的更多相关文章

  1. OpenJudge计算概论-奇数求和

    /*=================================================== 奇数求和 总时间限制: 1000ms 内存限制: 65536kB 描述 计算非负整数 m 到 ...

  2. OpenJudge计算概论-数字求和

    /*========================================================= 数字求和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个 ...

  3. OpenJudge计算概论-取石子游戏

    OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...

  4. OpenJudge计算概论-最高的分数

    /*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...

  5. Openjudge计算概论——数组逆序重放【递归练习】

    /*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...

  6. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  7. OpenJudge计算概论-求分数序列和

    /*======================================================================== 求分数序列和 总时间限制: 1000ms 内存限制 ...

  8. OpenJudge计算概论-错误探测

    /*======================================================================== 错误探测 总时间限制: 1000ms 内存限制: ...

  9. OpenJudge计算概论-比饭量【枚举法、信息数字化】

    /*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...

随机推荐

  1. 【清北学堂】广州OI学习游记

    \(Day~0\) 早上\(9\)点多才爬起来,然后水了道题. 下午从[数据删除]出发,颠簸了将近\(5\)个小时终于抵达广州. 一出地铁站--卧槽这天,卧槽这风,要下雨的节奏? 没过两分钟倾盆大雨. ...

  2. jmeter接口测试json详解

    本篇围绕jmeter(压力测试工具),请求json与返回json串处理进行解析,初入测试,理解如有不对的地方请大家及时提点~~ 在这里jmeter工具的使用不在做解释 首先说下乱码问题,在这里无脑5步 ...

  3. JavaScript异步学习笔记——主线程和任务队列

    任务队列 单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务.如果前一个任务耗时很长,后一个任务就不得不一直等着. 同步任务指的是,在主线程上排队执行的任务,只有前一个任务执行完毕, ...

  4. python中的lambda()函数

    语句:print map(lambda x:x ** 2,[1,2,3,4,5]) 其中lambda()函数在Python文档,文档中解释如下: lambda An anonymous inline ...

  5. mysql - InnoDB存储引擎 死锁问题( Deadlock found when trying to get lock; try restarting transaction )

    刚刚向数据库插入数据的时候出现了这么一段错误 Deadlock found when trying to get lock; try restarting transaction 主要原因(由于无法使 ...

  6. 一个 介绍 superset Kylin 以及大数据生态圈的 博文

    superSet http://superset.apache.org/installation.html https://segmentfault.com/a/1190000005083953 ht ...

  7. struts2--CRUD

    struts的CRUD 1.导入相关的pom依赖(struts.自定义标签库的依赖) <dependency> <groupId>jstl</groupId> &l ...

  8. OTFS Research Notes

    △f = f·v·cosθ/c,f表示载波频率,5G/B5G朝着毫米波等高频段方向发展,因此多普勒拓展的影响将更显著.此外,Masssive MIMO的现有规模已达256维度,并将朝着上千的规模发展. ...

  9. 提高 github.com 项目下载速度

    1 注册一个 github.com 账号 2 进入你感兴趣的项目 3 Fork  一个副本到你的账号之下 4 git clone https://github.com/your-name/fork-p ...

  10. Linux操作系统常用命令合集——第六篇-软件包操作(2个命令)

    一.前言介绍 软件包即程序包 程序包管理 关键词:rpm程序包管理.YUM仓库管理.源码编译安装 程序包管理: 将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装. ...