1034. 有理数四则运算(20)
2016-02-27 21:24
288 查看
#include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { void output(long int a,long int b); long int a1,b1,a2,b2; long int c[4]={0},d[4]={0}; char sign[]={'+','-','*','/'}; scanf("%ld/%ld %ld/%ld",&a1,&b1,&a2,&b2); c[0]=a1*b2+a2*b1;d[0]=b1*b2; c[1]=a1*b2-a2*b1;d[1]=b1*b2; c[2]=a1*a2;d[2]=b1*b2; c[3]=a1*b2;d[3]=b1*a2; if(d[3]<0){c[3]=-c[3];d[3]=-d[3];} for(int i=0;i<4;i++) { if(a1==0){cout<<0;}else{output(a1,b1);} cout<<" "<<sign[i]<<" "; if(a2==0){cout<<0;}else{output(a2,b2);} cout<<" = "; if(i<3) { if(c[i]==0){cout<<0;} else{output(c[i],d[i]);} }else { if(d[3]==0){cout<<"Inf";} else if(c[3]==0){cout<<0;} else{output(c[3],d[3]);} } cout<<endl; } return 0; } void output(long int a,long int b) { long int gys(long int x,long int y); bool f=false; if(a<0){cout<<"(-";a=-a;f=true;} long int g=gys(a,b); a=a/g;b=b/g; long int zs=a/b; long int ys=a%b; if(zs!=0) { cout<<zs; if(ys!=0){cout<<" "<<ys<<"/"<<b;} } else{cout<<ys<<"/"<<b;} if(f){cout<<")";} } long int gys(long int x,long int y) { long int r; while(y>0) { r=x%y; x=y; y=r; } return x; }
相关文章推荐
- java学习——入门扫盲篇
- python环境准备
- VS中包含目录、附加依赖项、附加库目录,启动项目的设置及具体设置
- Python图像处理库PIL的ImageFile模块介绍
- 图片压缩后长度和宽度 及像素坐标
- Diffuse_shadow顶点着色点光源阴影实现
- 如何分析业务问题
- JAVA 读取properties配置文件 - 全局搜索路径
- 关于移动互联网产品的指标分析初探
- Validate Binary Search Tree
- php+ajax实现登录验证
- java调用COM组件的几种工具
- C语言和设计模式(继承、封装、多态)
- zstu 1027 Monkey and Banana
- Linux SSH安全策略限制IP登录方法(转)
- iOS开发数据库篇—FMDB简单介绍
- 河南第六届ACM省赛(River Crossing)
- Activity的启动模式
- 从采集数据到领导查看过程,你还要浪费多少人力?
- 算法代码实现之选择排序,Java实现