1088. Rational Arithmetic (20)解题报告
来源:互联网 发布:网络销售彩票诈骗流程 编辑:程序博客网 时间:2024/05/17 09:00
//我使用了C++的类和运算符重载
#include <iostream>#include <cstdio>#include <cstdlib>using namespace std;class Rnum{public: Rnum(): num(0), denum(0){} Rnum(int num, int denum) { this->num = num; this->denum = denum; } Rnum(const Rnum &r) { this->num = r.num; this->denum = r.denum; } void print() const { long long n1, n2, n3; n2 = this->num; n3 = this->denum; if(!n3) { printf("Inf"); return; } n1 = n2 / n3; n2 %= n3; if(n1) { n2 = n2 < 0 ? -n2 : n2; n3 = n3 < 0 ? -n3 : n3; if(n1 < 0) { if(n2) { printf("(%lld %lld/%lld)", n1, n2, n3); } else { printf("(%lld)", n1); } } else { if(n2) { printf("%lld %lld/%lld", n1, n2, n3); } else { printf("%lld", n1); } } } else { if(!n2) { printf("0"); } else if(n2 < 0 && n3 < 0) { n2 = -n2; n3 = -n3; printf("%lld/%lld", n2, n3); } else if(n2 < 0) { printf("(%lld/%lld)", n2, n3); } else if(n3 < 0) { n2 = -n2; n3 = -n3; printf("(%lld/%lld)", n2, n3); } else { printf("%lld/%lld", n2, n3); } } return; } void simplify() { long long n1, n2, n3; if(num > 0 && denum < 0 || num < 0 && denum < 0) { num = -num; denum = -denum; } if(!num) { return; } if(!denum) { return; } n1 = num > 0 ? num : -num; n2 = denum > 0 ? denum : -denum; while(n1 % n2) { n3 = n1 % n2; n1 = n2; n2 = n3; } num /= n2; denum /= n2; return; } friend Rnum operator+(Rnum r1, Rnum r2); friend Rnum operator-(Rnum r1, Rnum r2); friend Rnum operator*(Rnum r1, Rnum r2); friend Rnum operator/(Rnum r1, Rnum r2);private: long long num, denum;};Rnum operator + (Rnum r1, Rnum r2){ Rnum r3; r3.num = r1.num * r2.denum + r1.denum * r2.num; r3.denum = r1.denum * r2.denum; r3.simplify(); return r3;}Rnum operator-(Rnum r1, Rnum r2){ Rnum r3; r3.num = r1.num * r2.denum - r1.denum * r2.num; r3.denum = r1.denum * r2.denum; r3.simplify(); return r3;}Rnum operator*(Rnum r1, Rnum r2){ Rnum r3; r3.num = r1.num * r2.num; r3.denum = r1.denum * r2.denum; r3.simplify(); return r3;}Rnum operator/(Rnum r1, Rnum r2){ Rnum r3; r3.num = r1.num * r2.denum; r3.denum = r1.denum * r2.num; r3.simplify(); return r3;}int main(){ long long n1, n2, n3, n4; scanf("%lld/%lld %lld/%lld", &n1, &n2, &n3, &n4); Rnum r1(n1, n2), r2(n3, n4), r3; r1.simplify(); r2.simplify(); r3 = r1 + r2; r1.print(); printf(" + "); r2.print(); printf(" = "); r3.print(); putchar('\n'); r3 = r1 - r2; r1.print(); printf(" - "); r2.print(); printf(" = "); r3.print(); putchar('\n'); r3 = r1 * r2; r1.print(); printf(" * "); r2.print(); printf(" = "); r3.print(); putchar('\n'); r3 = r1 / r2; r1.print(); printf(" / "); r2.print(); printf(" = "); r3.print(); putchar('\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)
- window.location.Reload()和window.location.href 区别
- 文章标题
- JavaScript中==和===的区别
- 论跳槽的正确姿势:写给明年即将跳槽的你们
- (五)安装nmon监控步骤---学习笔记
- 1088. Rational Arithmetic (20)解题报告
- VB多用户Winsock控件通讯实例
- java native 接口开发流程
- .net句柄无效
- UITextField进入编辑状态文字向下偏移
- 百度代码分享到QQ、微信、人人网等
- EnvironmentError: mysql_config not found
- C# 二叉树的综合操作(一):查找、插入、最大(小)值、先序遍历、后序遍历及中序遍历
- spring 整合 rabbitmq