描述:

输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1,则直接用整数表示。

如:5/6、10/3均是最简形式,而3/6需要化简为1/2, 3/1需要化简为3。

分子和分母均不为0,也不为负数。

输入第一行是一个整数n,表示分数个数,1 <= n <= 10;
接下来n行,每行一个分数,用"p/q"的形式表示,不含空格,p,q均不超过10。输出输出只有一行,即最终结果的最简形式。若为分数,用"p/q"的形式表示。样例输入

2
1/2
1/3

样例输出

5/6
思路:和普通数学算法一样,先通分(传入最小公倍数函数),再加减,最后化简(传入最大公约数函数)
代码如下(本代码来自我的老师:http://www.cnblogs.com/huashanqingzhu/p/3448694.html):
 #include<stdio.h>
struct fraction//分子分母结构体
{
int a,b;
};
int Gcd(int a,int b);//最大公约数
int Lcm(int a,int b);//最小公倍数
int main()
{
int n,i,d;
struct fraction f1,f2;
char c;
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-计算概论(A)-分数求和的更多相关文章

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

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

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

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

  3. OpenJudge计算概论-分数求和

    /*====================================================== 1006:分数求和 总时间限制: 1000ms 内存限制: 65536kB 描述 输入 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. android之控件与布局

    基本控件:TextViewButtonEditTextImageViewAlertDialog.BubliderProgressDialog 四种基本布局的特殊属性: LinerLayout andr ...

  2. 【IE6的疯狂之十一】CSS的优先级及!important在IE6下的BUG

    一 css的优先级 今天有人跟我说css hack中用!important来区分ie6,因为ie6不支持!important,是的在很早以前我也是用过这种方法写hack,但是后来就基本不用了.本来我对 ...

  3. webkit框架的使用

    // // JSViewController.m // Library // // Created by 朱逸 on 16/7/7. // Copyright © 2016年 朱逸. All righ ...

  4. [转]Delphi中QuotedStr介绍及使用

    转自:http://www.360doc.com/content/13/0524/09/7873422_287679198.shtml 使用S:string; qry2.SQL.add('select ...

  5. [Jmeter]jmeter之参数化

    一.同一个服务器不同界面访问 a 准备工作: 1.启动jmeter: 2.创建需要访问的url文件,内容示例如下: 即比如:http://www.cnblogs.com/amberly/p/59651 ...

  6. Redis性能问题排查解决手册

    转自:http://www.cnblogs.com/mushroom/p/4738170.html 阅读目录: 性能相关的数据指标 内存使用率used_memory 命令处理总数total_comma ...

  7. 搭建gitbook环境

    1.官网下载安装nodejs,安装完成后使用终端输入node -v,用cmd命令窗口查看是否安装成功:如下图所示: 2.在cmd命令窗口中输入:npm install -g cnpm -registr ...

  8. ecshop 分页小记

    ecshop 分页是ajax请求的,必须在主文件里有个 act = query 处理,分页会请求这个act <?php //获取列表 if($_REQUEST['act']=='list'){ ...

  9. Anaconda 安装概要

    Anaconda 作为开源项目,集成了Python的大部分第三方包,如:pandas,Numpy,scipy等. 1. 下载地址:https://www.continuum.io/downloads ...

  10. oracle数据库 参数open_cursors和session_cached_cursor详解!

    open_cursors 每个session(会话)最多能同时打开多少个cursor(游标) session_cached_cursor 每个session(会话)最多可以缓存多少个关闭掉的curso ...