OpenJudge计算概论-分数求和
/*======================================================
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计算概论-分数求和的更多相关文章
- OpenJudge计算概论-奇数求和
/*=================================================== 奇数求和 总时间限制: 1000ms 内存限制: 65536kB 描述 计算非负整数 m 到 ...
- OpenJudge计算概论-数字求和
/*========================================================= 数字求和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个 ...
- OpenJudge计算概论-取石子游戏
OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...
- OpenJudge计算概论-最高的分数
/*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...
- Openjudge计算概论——数组逆序重放【递归练习】
/*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...
- OpenJudge计算概论-计算书费
/*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...
- OpenJudge计算概论-求分数序列和
/*======================================================================== 求分数序列和 总时间限制: 1000ms 内存限制 ...
- OpenJudge计算概论-错误探测
/*======================================================================== 错误探测 总时间限制: 1000ms 内存限制: ...
- OpenJudge计算概论-比饭量【枚举法、信息数字化】
/*====================================================================== 比饭量 总时间限制: 1000ms 内存限制: 655 ...
随机推荐
- Mysql踩坑 自动更新的时间只允许有一个
执行如下SQL创建表: CREATE TABLE aa ( a INT, b TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c TIMESTAMP DEFAULT CU ...
- Python 虚拟空间的使用
使用虚拟环境, 可以将当前项目所使用的依赖与电脑中其他 Python 项目的依赖区分开, 避免依赖版本不匹配带来的问题, 同时也可以防止项目依赖被不当更新. mkdir myproject cd my ...
- 使用git下载和引进项目流程
1.下载地址https://git-scm.com/download/win 2.idea中加入git插件 Git插件引入 3.复制github中项目地址在idea中打开 4.使用git ...
- 15 Windows编程——系统内置窗口子类型之button
button子类型BS_3STATE.BS_AUTO3STATE.BS_AUTOCHECKBOX 源码 #include<Windows.h> #include<Windowsx.h ...
- 滑雪 ( bfs+记忆化
https://www.luogu.org/problemnew/show/P1434 题目 #include<iostream> #include<cstdio> #inc ...
- python3 excel基本操作及格式设置
#encoding=utf-8 ''' excel基本操作整理 ''' #openpyxl 版本2.5.4 from openpyxl import * import datetime as dt f ...
- MyBatis_[tp_48]_动态sql_内置参数_parameter&_databaseId
笔记要点-----内置参数_parameter&_databaseId 用处: 迅速切换数据库,执行一条多分支的sql语句即可;1.定义接口 public interface Emp ...
- 第七届蓝桥杯C/C++程序设计本科B组决赛 ——棋子换位(代码补全题)
棋子换位 有n个棋子A,n个棋子B,在棋盘上排成一行.它们中间隔着一个空位,用“.”表示,比如: AAA.BBB 现在需要所有的A棋子和B棋子交换位置.移动棋子的规则是:1. A棋子只能往右边移动,B ...
- Vue中在组件销毁时清除定时器(setInterval)
在mounted中创建并执行定时器,然后在beforeDestroy或者destroyed中清除定时器 <template> <div class="about" ...
- 负载均衡集群(LBC)
一.LVS简介及工作模式1. LVS简介Linux Virtual Server,该软件的功能是实现LB(load balance) 2.LVS的三种工作模式 1)NAT模式(NAT) LVS 服务器 ...