分数(有理数)的四则运算PAT1088
2015-02-05
PAT- B1088. Rational Arithmetic (20)
http://www.patest.cn/contests/pat-a-practise/1088
#include <iostream>
#include <cmath>
using namespace std;
typedef long long LL;
typedef struct Fraction{
LL up,down;
};
LL gcd(LL a,LL b){
return b== ? a : gcd(b,a%b);
}
Fraction reduction(Fraction res){
if(res.down<){
res.down=-res.down;
res.up=-res.up;
}
else if(res.up==)
res.down==;
else{
LL d=gcd(abs(res.up),res.down);
res.up/=d;
res.down/=d;
}
return res;
}
Fraction add(Fraction a,Fraction b){
Fraction res;
res.up=a.up*b.down+a.down*b.up;
res.down=a.down*b.down;
return reduction(res);
}
Fraction sub(Fraction a,Fraction b){
Fraction res;
res.up=a.up*b.down-a.down*b.up;
res.down=a.down*b.down;
return reduction(res);
}
Fraction multi(Fraction a,Fraction b){
Fraction res;
res.up=a.up*b.up;
res.down=a.down*b.down;
return reduction(res);
}
Fraction divide(Fraction a,Fraction b){
Fraction res;
res.up=a.up*b.down;
res.down=a.down*b.up;
return reduction(res);
}
void showFraction(Fraction res){
res=reduction(res);
if(res.up<)
printf("(");
if(res.down==)
printf("%lld",res.up);
else if(res.up==)
printf("");
else if(abs(res.up)>res.down){
printf("%lld %lld/%lld",res.up/res.down,abs(res.up)%res.down,res.down);
}
else{
printf("%lld/%lld",res.up,res.down);
}
if(res.up<)
printf(")");
}
void output(Fraction a,Fraction b,char ch){
showFraction(a);
printf(" %c ",ch);
showFraction(b);
printf(" = ");
switch(ch){
case '+':
showFraction(add(a,b));
break;
case '-':
showFraction(sub(a,b));
break;
case '*':
showFraction(multi(a,b));
break;
case '/':
if(b.up==)
printf("Inf");
else
showFraction(divide(a,b));
break;
default:
printf("error");
break;
}
printf("\n");
}
int main()
{
Fraction a,b,ans;
while(scanf("%lld/%lld %lld/%lld",&a.up,&a.down,&b.up,&b.down)!=EOF){
a=reduction(a);
b=reduction(b);
output(a,b,'+');
output(a,b,'-');
output(a,b,'*');
output(a,b,'/');
}
return ;
}
分数(有理数)的四则运算PAT1088的更多相关文章
- 第十七周oj刷题——Problem B: 分数类的四则运算【C++】
Description 编写分数类Fraction,实现两个分数的加.减.乘和除四则运算.主函数已给定. Input 每行四个数,分别表示两个分数的分子和分母,以0 0 0 0 表示结束. Outpu ...
- python 分数的数学四则运算
import fractions f1 = fractions.Fraction(, ) f2 = fractions.Fraction(, ) print('{} + {} = {}'.format ...
- 用C++实现的有理数(分数)四则混合运算计算器
实现目标 用C++实现下图所示的一个console程序: 其中: 1.加减乘除四种运算符号分别用+.-.*./表示, + 和 - 还分别用于表示正号和负号. 2.分数的分子和分母以符号 / 分隔. 3 ...
- 30道四则运算<1>
#include<iostream> using namespace std; #define random()(rand()%100) class shuzi //shuzi类的功能是产 ...
- 对"一维最大子数组和"问题的思考
对"一维最大子数组和"问题的思考(homework-01) 一维最大子数组和问题,即给定一个数组,在它所有的连续子数组的和中,求最大的那个和.“最大子数组和”是一个很好的IT面试考 ...
- 现代软件工程HW2:结对编程-生成五则运算式-Core10组 [PB16110698+PB16120162]
作业具体要求点 这里 Core组要求: 1.Calc() 这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * 0.3”等等) ...
- [python学习手册-笔记]003.数值类型
003.数值类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- 用java具体代码实现分数(即有理数)四则运算
用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...
- PAT Basic 1034 有理数四则运算(20) [数学问题-分数的四则运算]
题目 本题要求编写程序,计算2个有理数的和.差.积.商. 输⼊格式: 输⼊在⼀⾏中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
随机推荐
- 程序设计C 实验三 题目九 方程式(0300)
Description: Consider equations having the following form: a*x1*x1 + b*x2*x2 + c*x3*x3 + d*x4*x4 = 0 ...
- ng-selected 与ng-options的使用
1:ng-selected用在<option>标签上面,ng-options用在<select>上面,用于动态创建options列表. <form class=" ...
- activity,view,window,windowmanager代码阅读总结及相互关系
ActivityThread类:performLaunchActivity函数: activity.attach(appContext, this, getInstrumentation(), r.t ...
- Codeforces 538E Demiurges Play Again(博弈DP)
http://codeforces.com/problemset/problem/538/E 题目大意: 给出一棵树,叶子节点上都有一个值,从1-m.有两个人交替从根选择道路,先手希望到达的叶子节点尽 ...
- logstash 安装zabbix插件
<pre name="code" class="html">[root@xxyy yum.repos.d]# yum install ruby Lo ...
- linux sar查看网络流量
sar -n DEV 1 10 -n { keyword [,...] | ALL } Report network statistics. IFACE Name of the network int ...
- 黑马程序员_Java面向对象_内部类
6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...
- puppet foreman
服务器(物理机器和虚拟机)多了以后需要工具来管理,经常登陆系统后不知是在虚拟机上还是在物理机上?如果在虚拟机上这个虚拟机运行在哪个服务器节 点(host)上?如果在物理机上运行在什么配置的物理机上?运 ...
- Annotation(四)——Struts2注解开发
Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...
- tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式
tool - 支持TestLink 1.93,将excel格式用例转化成可以导入的xml格式 https://github.com/zhangzheyuk/CaseConvert