1034. 有理数四则运算(20)PAT乙级&&1088. Rational Arithmetic (20)PAT甲级
来源:互联网 发布:c专家编程第二版 编辑:程序博客网 时间:2024/06/04 18:09
甲级传送门
乙级传送门
#include<stdio.h>#include<math.h>#include <stdlib.h>#include<algorithm>//加上就通过 using namespace std;//加上就通过 typedef long long ll;ll gcd(ll a,ll b){ if(a%b==0) return b; else return gcd(b,a%b);}struct Fraction{ ll down; ll up;}a,b;Fraction reduction(Fraction f){ if(f.down<0){ f.up=-f.up; f.down=-f.down; } if(f.up==0){ f.down=1; } else{ int g=gcd(abs(f.up),abs(f.down)); f.down/=g; f.up/=g; } return f;}Fraction add(Fraction a,Fraction b){ Fraction result; result.down=a.down*b.down; result.up=a.down*b.up+a.up*b.down; return reduction(result);}Fraction minu(Fraction a,Fraction b){ Fraction result; result.down=a.down*b.down; result.up=a.up*b.down-a.down*b.up; return reduction(result);}Fraction mul(Fraction a,Fraction b){ Fraction result; result.down=a.down*b.down; result.up=a.up*b.up; return reduction(result);}Fraction divide(Fraction a,Fraction b){ Fraction result; result.down=a.down*b.up; result.up=a.up*b.down; return reduction(result);}void show(Fraction f){ f=reduction(f); if(f.up<0) printf("("); if(f.down==1) printf("%lld",f.up); else{ if(abs(f.up)>f.down){ printf("%lld %lld/%lld",f.up/f.down,abs(f.up)%f.down,f.down); } else{ printf("%lld/%lld",f.up,f.down); } } if(f.up<0) printf(")");}int main(){ scanf("%lld/%lld %lld/%lld",&a.up,&a.down,&b.up,&b.down); show(a); printf(" + "); show(b); printf(" = "); show(add(a,b)); printf("\n"); show(a); printf(" - "); show(b); printf(" = "); show(minu(a,b)); printf("\n"); show(a); printf(" * "); show(b); printf(" = "); show(mul(a,b)); printf("\n"); show(a); printf(" / "); show(b); printf(" = "); if(b.up==0) printf("Inf"); else show(divide(a,b)); return 0; //printf("\n");}
0 0
- 1034. 有理数四则运算(20)PAT乙级&&1088. Rational Arithmetic (20)PAT甲级
- PAT(A) 1088. Rational Arithmetic & PAT(B) 1034. 有理数四则运算(20)
- PAT乙级 有理数四则运算(20)
- PAT-乙级-1034. 有理数四则运算(20)
- PAT乙级.1034. 有理数四则运算(20)
- PAT 乙级 1034. 有理数四则运算(20)
- PAT 乙级 1034. 有理数四则运算(20)
- PAT乙级 1034. 有理数四则运算(20)
- PAT乙级 1034. 有理数四则运算(20)
- [PAT乙级]1034. 有理数四则运算(20)
- PAT乙级1034. 有理数四则运算(20)
- pat 乙级 1034. 有理数四则运算(20)
- PAT 甲级 1088. Rational Arithmetic (20)
- PAT 乙级 1034.有理数四则运算
- [PAT-乙级]1034.有理数四则运算
- PAT(乙级)1024 有理数四则运算(20)
- 1034. 有理数四则运算(20)||1088. Rational Arithmetic (20)
- PAT乙级—1034. 有理数四则运算(20)-native
- uC/OS-II 移植 内核系统裁剪os_cfg.h
- Oracle之包
- vim的一些操作
- Android ContentProvider(内容提供者{模拟底层})和Contentresolver(内容接受者{实现对ContentProvider数据的修改})
- 500. Keyboard Row - 是否为键盘行序列
- 1034. 有理数四则运算(20)PAT乙级&&1088. Rational Arithmetic (20)PAT甲级
- Android系统广播大全
- 解决免安装版Mysql出现任何用户不用密码都能登录的问题
- C语言结构体和共用体(2)
- ubuntu 安装MySQL-python(MySQLdb)
- c语言学习之snprintf
- Java面向对象
- Java基础知识总结(入门准备)
- fastjson的常用使用方法