分数(有理数)的四则运算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"的格式给出两个分数形式的有理数,其中分⼦和分⺟全是整型范围内的整数, ...
随机推荐
- Linux下的管道命令有这些:
Linux下的管道命令有这些: 选取命令:cat grep 排序命令:sort wc uniq 双向重定向:tee 字符转换命令: tr, col, join, paste, expand 切割命令: ...
- Python 变量有效范围
- SSH三者作用
Struts在项目中的作用 Struts 在项目主要起控制作用,只要用于web层(即视图层和控制层)Struts本身是使用典型的MVC结构实现的,项目中使用了struts之后就等于项目也是一个MVC结 ...
- B树叶子节点split
一.B-Tree索引的分裂 1. 创建测试表 SQL> create table split_tab (id number, name varchar2(100)); 表已创建. SQL> ...
- cf492B Vanya and Lanterns
B. Vanya and Lanterns time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Linux远程访问windows时,出现"连接被对端重置"错误
1.sudo apt-get install rdesktop 需要下载 152 kB 的软件包. 解压缩后会消耗掉 512 kB 的额外空间. 2.运行时出现错误 root@oskey- ...
- Java并发实现一(并发的实现之Thread和Runnable的区别)
package com.subject01; public class ThreadOrRunnable { public static void main(String[] args) { Syst ...
- hdu 4983 Goffi and GCD(欧拉函数)
Problem Description Goffi is doing his math homework and he finds an equality on his text book: gcd( ...
- stardict词典(星际译王)
sudo apt-get install stardict 下载词库: http://abloz.com/huzheng/stardict-dic/zh_CN/ 把下载的压缩包解压,以a为例cd /u ...
- 设计: ListView 接口,and the missing read-only interfaces in java collection framework
Java的集合框架以其成功易用的设计征服了很多人(包括我),并且教科书式的诠释了泛型的应用方式. 我也是被 Joshua Bloch 的书引领入门,从中得益良多.我当然不会认为自己在设计上比他懂得更多 ...