1088. Rational Arithmetic (20)
来源:互联网 发布:云计算工程师好干吗 编辑:程序博客网 时间:2024/06/15 20:21
#include<cstdio>#include<algorithm>using namespace std;struct Fraction{ long long up,down;};long long gcd(long long a,long long b){ if(b == 0) return a; else return gcd(b,a%b);}Fraction reduction(Fraction f1){ if(f1.down<0) { f1.up = -f1.up; f1.down = -f1.down; } if(f1.up == 0) f1.down = 1; else { int x = gcd(abs(f1.up) ,abs(f1.down)); f1.up = f1.up / x; f1.down = f1.down / x; } return f1;}//输出结果,如果是整数输出整数类型//如果是假分数,输出整数和分数部分,否则直接输出,符号在整数前面void show_re(Fraction f1){ if(f1.up<0) printf("("); f1 = reduction(f1); if(f1.down == 1) { printf("%lld",f1.up); } else if(abs(f1.up) > f1.down) { printf("%lld %lld/%lld",f1.up / f1.down,abs(f1.up) % f1.down, f1.down); } else { printf("%lld/%lld",f1.up,f1.down); } if(f1.up<0) printf(")");}Fraction add(Fraction f1,Fraction f2){ Fraction re; re.up = f1.up * f2.down + f2.up * f1.down; re.down = f1.down * f2.down; return reduction(re);}Fraction minu(Fraction f1,Fraction f2){ Fraction re; re.up = f1.up * f2.down - f2.up * f1.down; re.down = f1.down * f2.down; return reduction(re);}Fraction multi(Fraction f1,Fraction f2){ Fraction re; re.up = f1.up * f2.up; re.down = f1.down * f2.down; return reduction(re);}Fraction divide(Fraction f1,Fraction f2){ Fraction re; re.up = f1.up * f2.down; re.down = f1.down * f2.up; return reduction(re);}using namespace std;int main(){ int N; Fraction f1,f2,sum; scanf("%lld/%lld %lld/%lld",&f1.up,&f1.down,&f2.up,&f2.down); show_re(f1); printf(" + "); show_re(f2); printf(" = "); sum = add(f1,f2); show_re(sum); printf("\n"); show_re(f1); printf(" - "); show_re(f2); printf(" = "); sum = minu(f1,f2); show_re(sum); printf("\n"); show_re(f1); printf(" * "); show_re(f2); printf(" = "); sum = multi(f1,f2); show_re(sum); printf("\n"); show_re(f1); printf(" / "); show_re(f2); printf(" = "); if(f2.up != 0) { sum = divide(f1,f2); show_re(sum); } else { printf("Inf"); } printf("\n"); return 0;}
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)
- 图 续2
- 不用额外变量交换两个整数的值
- 3Dmax快捷键
- 深度学习:梯度消失和梯度爆炸
- 1087. All Roads Lead to Rome (30)
- 1088. Rational Arithmetic (20)
- Train Problem I (栈的模拟)
- npm安装
- 冒泡排序
- iptable使用笔记
- 1090. Highest Price in Supply Chain (25)
- Python中的新奇玩意
- POSIX(Portable Operating System Interface )信号处理
- 1092. To Buy or Not to Buy (20)