1088. Rational Arithmetic (20)
来源:互联网 发布:重生之娱乐网络帝国txt 编辑:程序博客网 时间:2024/05/18 13:26
import java.math.BigInteger;import java.util.Scanner;import java.util.regex.MatchResult;class Rational {BigInteger n, d;}public class Main {public static Rational add(Rational r1, Rational r2) {BigInteger gcd = r1.d.gcd(r2.d);BigInteger q1 = r1.d.divide(gcd);BigInteger q2 = r2.d.divide(gcd);Rational sum = new Rational();sum.n = r1.n.multiply(q2).add(r2.n.multiply(q1));sum.d = r1.d.multiply(q2);return sum;}public static Rational sub(Rational r1, Rational r2) {Rational r = new Rational();r.n = r2.n.negate();r.d = r2.d;return add(r1, r);}public static Rational multiply(Rational r1, Rational r2) {Rational r = new Rational();r.n = r1.n.multiply(r2.n);r.d = r1.d.multiply(r2.d);return r;}public static Rational divide(Rational r1, Rational r2) {Rational r = new Rational();r.n = r2.d;r.d = r2.n;return multiply(r1, r);}public static void printRational(Rational rr) {Rational r = new Rational();r.n = rr.n;r.d = rr.d;if(r.d.equals(BigInteger.ZERO)) {System.out.print("Inf");}else if(r.n.equals(BigInteger.ZERO)) {System.out.print("0");}else {if(r.d.compareTo(BigInteger.ZERO) < 0) {r.n = r.n.negate();r.d = r.d.negate();}boolean sign = r.n.compareTo(BigInteger.ZERO) > 0;if(!sign) {r.n = r.n.negate();}BigInteger gcd = r.n.gcd(r.d);r.n = r.n.divide(gcd);r.d = r.d.divide(gcd);BigInteger qr[] = r.n.divideAndRemainder(r.d);if(sign) {if(qr[0].equals(BigInteger.ZERO)) {System.out.format("%s/%s", r.n.toString(), r.d.toString());}else {if(!qr[1].equals(BigInteger.ZERO))System.out.format("%s %s/%s", qr[0].toString(), qr[1].toString(), r.d.toString());elseSystem.out.format("%s", qr[0].toString());}}else {if(qr[0].equals(BigInteger.ZERO)) {System.out.format("(-%s/%s)", r.n.toString(), r.d.toString());}else {if(!qr[1].equals(BigInteger.ZERO))System.out.format("(-%s %s/%s)", qr[0].toString(), qr[1].toString(), r.d.toString());elseSystem.out.format("(-%s)", qr[0].toString());}}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in).useDelimiter("[ \r\n/]");Rational[] list = new Rational[2];for(int i = 0; i < 2; i ++) {list[i] = new Rational();list[i].n = scanner.nextBigInteger();list[i].d = scanner.nextBigInteger();}Rational r[] = new Rational[4];r[0] = add(list[0], list[1]);r[1] = sub(list[0], list[1]);r[2] = multiply(list[0], list[1]);r[3] = divide(list[0], list[1]);String op = "+-*/";for(int i = 0; i < 4; i ++) {printRational(list[0]);System.out.format(" %c ", op.charAt(i));printRational(list[1]);System.out.print(" = ");printRational(r[i]);System.out.println();}}}
0 0
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- 1088. Rational Arithmetic (20)
- centos6.5下mysql安装与配置
- 分布式交易系统设计 7 分布式锁
- SharePoint Timerjob 部署
- 刘云浩:群智感知——从主动击发,到无意识配合(众包思想的延展)
- ASP.NET仿新浪微博下拉加载更多数据瀑布流效果
- 1088. Rational Arithmetic (20)
- 搭建python+PyQt+Eric平台
- 【呆子谈管理】:做客户服务的唯一标准
- UML类中的几种关系(有图有例子说明)
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- ural 1353. Milliard Vasya's Function
- EJB3.0 MDB实现
- 实验二
- 删除单链表某个结点