1088 Rational Arithmetic
题意:
给出两个分式(a1/b1 a2/b2),分子、分母的范围为int型,且确保分母不为0。计算两个分数的加减乘除,结果化为最简的形式,即"k a/b",其中若除数为0的话,输出Inf。
思路:
分数四则运算的模板题。分析详见:基础数学问题
代码:
#include <stdio.h> #include <string.h> #include <stdlib.h>//abs() typedef long long LL; struct Fraction{ LL up;//分子 LL down;//分母 Fraction():up(),down(){}//默认初始化 Fraction(int up_,int down_):up(up_),down(down_){} }; //求最大公约数 int gcd(LL a,LL b){ ) return a; else return gcd(b,a%b); } //分数化简 void simplify(Fraction& a){ ) { a.down = -a.down; a.up = -a.up; } ){ a.down=; }else{ int commonFractor=gcd(abs(a.up), abs(a.down));//注意要加绝对值!!! a.up/=commonFractor; a.down/=commonFractor; } } //打印分数 void printFraction(Fraction a){ simplify(a); ) printf("("); ) printf("%lld",a.up);//如果分母为1,则只打印分子即可 else{ if(abs(a.up)>abs(a.down)) printf("%lld %lld/%lld",a.up/a.down,abs(a.up)%a.down,a.down); else printf("%lld/%lld",a.up,a.down); } ) printf(")"); } //分数相加 Fraction add(Fraction a,Fraction b){ Fraction c; c.down=a.down*b.down; c.up=a.up*b.down+a.down*b.up; simplify(c); return c; } //分数相减 Fraction sub(Fraction a,Fraction b){ Fraction c; c.down=a.down*b.down; c.up=a.up*b.down-a.down*b.up; simplify(c); return c; } //分数相乘 Fraction multiply(Fraction a,Fraction b){ Fraction c; c.down=a.down*b.down; c.up=a.up*b.up; simplify(c); return c; } //分数相除 Fraction divide(Fraction a,Fraction b){ Fraction c; c.down=a.down*b.up; c.up=a.up*b.down; simplify(c); return c; } void showEquation(Fraction a,Fraction b,const char* op) { bool flag=true; Fraction ans; printFraction(a); ){ printf(" + "); ans=add(a,b); }){ printf(" - "); ans=sub(a,b); }){ printf(" * "); ans=multiply(a,b); }else { printf(" / "); ) flag=false; else ans=divide(a,b); } printFraction(b); printf(" = "); if(flag) printFraction(ans); else printf("Inf"); printf("\n"); } int main() { LL a1,b1,a2,b2; scanf("%lld/%lld %lld/%lld",&a1,&b1,&a2,&b2); Fraction a(a1,b1); Fraction b(a2,b2); showEquation(a,b,"add"); showEquation(a,b,"sub"); showEquation(a,b,"multiply"); showEquation(a,b,"divide"); ; }
1088 Rational Arithmetic的更多相关文章
- PAT 1088 Rational Arithmetic[模拟分数的加减乘除][难]
1088 Rational Arithmetic(20 分) For two rational numbers, your task is to implement the basic arithme ...
- 1088 Rational Arithmetic(20 分)
For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...
- PAT 1088. Rational Arithmetic
For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...
- PAT Advanced 1088 Rational Arithmetic (20) [数学问题-分数的四则运算]
题目 For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate ...
- PAT甲题题解-1088. Rational Arithmetic (20)-模拟分数计算
输入为两个分数,让你计算+,-,*,\四种结果,并且输出对应的式子,分数要按带分数的格式k a/b输出如果为负数,则带分数两边要有括号如果除数为0,则式子中的结果输出Inf模拟题最好自己动手实现,考验 ...
- PAT (Advanced Level) 1088. Rational Arithmetic (20)
简单题. 注意:读入的分数可能不是最简的.输出时也需要转换成最简. #include<cstdio> #include<cstring> #include<cmath&g ...
- 【PAT甲级】1088 Rational Arithmetic (20 分)
题意: 输入两个分数(分子分母各为一个整数中间用'/'分隔),输出它们的四则运算表达式.小数需要用"("和")"括起来,分母为0的话输出"Inf&qu ...
- 1088. Rational Arithmetic (20)
1.注意在数字和string转化过程中,需要考虑数字不是只有一位的,如300转为"300",一开始卡在里这里, 测试用例: 24/8 100/10 24/11 300/11 2.该 ...
- PAT1088:Rational Arithmetic
1088. Rational Arithmetic (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue F ...
随机推荐
- LeetCode第[1]题(Java):Two Sum (俩数和为目标数的下标)——EASY
题目: Given an array of integers, return indices of the two numbers such that they add up to a specifi ...
- angular custom Element 自定义web component
angular 自定义web组件: 首先创建一个名为myCustom的组件. 引入app.module: ... import {customComponent} from ' ./myCustom. ...
- [Hadoop] - Hadoop 3.x版本新特性
仅做记录--->官方说明:http://hadoop.apache.org/docs/r3.0.0-alpha2/index.html ============================= ...
- Ceph中的容量计算与管理
转自:https://www.ustack.com/blog/ceph%ef%bc%8drongliang/ 在部署完Ceph集群之后,一般地我们可以通过Ceph df这个命令来查看集群的容量状态,但 ...
- kibana查询语法
单项term查询 例: 搜 Dahlen, Malone 字段field查询 field:value 例:city:Keyport, age:26 通配符 ? 匹配单个字符 例: H?b ...
- java中常用的帮助类。加快开发速度
数据库帮助类 package com.cwnu.uitl; import java.sql.*; /** * 数据库基础操作实现类 * * @author BlackWinter * * @date ...
- Django 使用 内置 content-type
django内置的content-type组件, 记录了项目中所有model元数据的表 可以通过一个ContentType表的id和一个具体表中的id找到任何记录,及先通过ContenType表的id ...
- python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
python 魔法方法补充 1 getattribute (print(ob.name) -- obj.func())当访问对象的属性或者是方法的时候触发 class F(object): def _ ...
- TF随笔-3
>>> import tensorflow as tf>>> node1 = tf.constant(3.0, dtype=tf.float32)>>& ...
- prefixfree.min.js 的用途
简单而言,这东西就是自动加前缀的,在link中,或是style中,或是dom元素的style中书写CSS3 code,或是jQuery .css()方法此脚本会自动补上需要的前缀,让响应的浏览器支持该 ...