1088. Rational Arithmetic (20)
来源:互联网 发布:ubuntu 设置mac 编辑:程序博客网 时间:2024/05/17 04:25
题目:https://www.patest.cn/contests/pat-a-practise/1088
代码:
#include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; struct fra{ long long up; long long down; }; long long gcd(long long a,long long b){ return b==0?a:gcd(b,a%b); } fra change(fra t){ if(t.down<0){ t.up=-t.up; t.down=-t.down; } if(t.up==0){ t.down=1; }else{ int d=gcd(abs(t.up),abs(t.down)); t.up/=d; t.down/=d; } return t; } fra add(fra a,fra b){ fra temp; temp.down=a.down*b.down; temp.up=a.down*b.up+a.up*b.down; return change(temp); } fra minu(fra a,fra b){ fra temp; temp.down=a.down*b.down; temp.up=a.up*b.down-a.down*b.up; return change(temp); }fra multi(fra a,fra b){fra temp; temp.down=a.down*b.down; temp.up=a.up*b.up; return change(temp); }fra divide(fra a,fra b){fra temp; temp.down=a.down*b.up; temp.up=a.up*b.down; return change(temp); }void myshow(fra t){ t=change(t); if(t.up<0) printf("("); if(t.down==1) printf("%lld",t.up); else if(abs(t.up)>abs(t.down)){ printf("%lld %lld/%lld",t.up/t.down,abs(t.up)%t.down,t.down); }else { printf("%lld/%lld",t.up,t.down); } if(t.up<0)printf(")");}int main() { fra a,b;scanf("%lld/%lld %lld/%lld",&a.up,&a.down,&b.up,&b.down);myshow(a);printf(" + ");myshow(b);printf(" = ");myshow(add(a,b));printf("\n");myshow(a);printf(" - ");myshow(b);printf(" = ");myshow(minu(a,b));printf("\n");myshow(a);printf(" * ");myshow(b);printf(" = ");myshow(multi(a,b));printf("\n");myshow(a);printf(" / ");myshow(b);printf(" = ");if(b.up==0) printf("Inf");else myshow(divide(a,b)); system("pause"); }
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)
- Json_JackSon_lesson1 Jackson的 序列化与反序列化
- XP下软件崩溃,adplus抓取Dump方法
- 【Java笔记】public、private 和 protected
- 2、Unity3D 5.3 新版AssetBundle使用方案及策略
- 推荐:炫酷菜单弹射动画:SDiffuseMenu(AwesomeMenu)
- 1088. Rational Arithmetic (20)
- 平衡二叉树的Java实现——插入操作【无泛型】
- 51Nod - 1246 贪心 + 优先队列
- 超过一万人就显示1.3万人这样的格式
- Java基本类型与包装类
- sublime添加到右键快捷菜单
- unity3d状态机基础学习(一)
- php文件上传
- 新年第一天上班