Openjudge-计算概论(A)-分数求和
描述:
输入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)-分数求和的更多相关文章
- OpenJudge计算概论-求分数序列和
/*======================================================================== 求分数序列和 总时间限制: 1000ms 内存限制 ...
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- OpenJudge计算概论-分数求和
/*====================================================== 1006:分数求和 总时间限制: 1000ms 内存限制: 65536kB 描述 输入 ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- OpenJudge计算概论-奇数求和
/*=================================================== 奇数求和 总时间限制: 1000ms 内存限制: 65536kB 描述 计算非负整数 m 到 ...
- OpenJudge计算概论-数字求和
/*========================================================= 数字求和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个 ...
- OpenJudge计算概论-错误探测
/*======================================================================== 错误探测 总时间限制: 1000ms 内存限制: ...
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
随机推荐
- 关于wkwebview
一.引入库 #import <WebKit/WebKit.h> 二.初始化有两种方式 // 默认初始化 - (instancetype)initWithFrame:(CGRect)fram ...
- hdu1722
链接 一份切成q份需要q刀,切成p份需要p刀:切的部分总会有重复,即gcd(p,q),减去重复部分就是要切的刀数 #include<stdio.h> int gcd(int n,int m ...
- @ResponseBody注解与JSON
MappingJacksonHttpMessageConverter 调用了 objectMapper.writeValue(OutputStream stream, Object)方法,使用@Res ...
- 页面导入样式时,使用link和@import有什么区别?
1 link属于XHTML标签,而@import是CSS提供的: 2 页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载: 3 import只有在IE5以上才能 ...
- Shell学习笔记 ——第二天
1.显示日期 date | cal cal 2010 cal 2 2010 2.改变文件拥有者 chown 3.改变文件权限 chmod 4.显示当前目录 pwd 5.查看文件尾部内容,并 ...
- Nohttp框架在Android Studio中的使用
1.添加noHttp的使用权限 <!-- 读写 sd 卡 --> <uses-permission android:name="android.permission.REA ...
- 面试题:实现一个方法clone;可以对js五种数据类型进行值复制
//先来方法的代码function clone(obj) { var copy; switch(typeof obj){ case 'number': case 'string': case 'boo ...
- CocoaPods 报错 [!] The dependency `JSONModel (~> 1.2.0)` is not used in any concrete target.
当用CocoaPods pod install 时出现了下面的错误时: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; col ...
- iframe自适应高度计算,iframe自适应
计算页面的实际高度,iframe自适应会用到 IfrHeight: function (iframeId, callback) { var height; function calcPageHeigh ...
- windows 7 & protobuf 3.0 & python 3.5
置顶: 在Python中使用protocol buffers参考指南 http://blog.csdn.net/losophy/article/details/17006573 其实看这篇文章就可以把 ...