PAT 1088. Rational Arithmetic (20)
2015-11-25 17:10
495 查看
#include<vector> #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<queue> #include<map> #include<set> #include<stack> using namespace std; #define INF 100000000 #define min(a,b) a<b?a:b void Swap(char *s,char *b) { char t=*s; *s=*b; *b=t; } long int gcd(long int m,long int n) { long int t=1; while(t!=0) { t=m%n; m=n; n=t; } return m; } void print(long int sum,char s,long int a[] ,long int b[],long int n) { long int t=0; for(int i=0;i<2;i++) { if(a[i]==0) printf("0 "); else { if(a[i]/b[i]!=0) { if(a[i]%b[i]==0) { if(a[i]>0) printf("%d ",a[i]/b[i]); else printf("(%ld) ",a[i]/b[i]); } else if(a[i]/b[i]>0) printf("%ld %ld/%ld ",a[i]/b[i],a[i]%b[i],b[i]); else printf("(%ld %ld/%ld) ",a[i]/b[i],abs(a[i])%b[i],b[i]); } else if(a[i]>0) printf("%ld/%ld ",a[i]%b[i],b[i]); else printf("(%ld/%ld) ",a[i]%b[i],b[i]); } if(i==0) printf("%c ",s); } if(s=='/'&&a[1]==0) { printf("= Inf\n"); } else { if(sum==0) printf("= 0\n"); else { t=gcd(abs(sum),abs(n)); if(sum/n!=0) { if(sum%n==0) { if(sum/n>0) printf("= %ld\n",sum/n); else printf("= (%ld)\n",sum/n); } else {if(sum/n>0) printf("= %ld %ld/%ld\n",sum/n,abs(sum)%n/t,n/t); else printf("= (%ld %ld/%ld)\n",sum/n,abs(sum)%n/t,n/t); } } else { printf("= "); if(sum<0) printf("("); printf("%ld/%ld",sum/t,n/t); if(sum<0) printf(")"); printf("\n"); } } } } int main() { long int t=0; long int sum=0; long int a[2],b[2]; for(int i=0;i<2;i++) { scanf("%ld/%ld",&a[i],&b[i]); if(a[i]!=0) { t=gcd(abs(a[i]),b[i]); if(b[i]<0) { b[i]*=-1; a[i]*=-1; } if(t!=1) { a[i]/=t; b[i]/=t; } } } t=gcd(b[1],b[0]); t=b[1]/t*b[0]; sum=t/b[0]*a[0]; sum+=t/b[1]*a[1]; print(sum,'+',a,b,t); sum=t/b[0]*a[0]; sum-=t/b[1]*a[1]; print(sum,'-',a,b,t); sum=0; sum=a[1]*a[0]; t=b[0]*b[1]; print(sum,'*',a,b,t); sum=0; sum=a[0]*b[1]; t=b[0]*abs(a[1]); if(a[1]<0) sum*=-1; print(sum,'/',a,b,t); return 0; }
相关文章推荐
- 3【学校教学系统】获取主界面
- (java)Binary Tree Level Order Traversal II
- 1072. Gas Station (30)
- 混响音效
- 一个数组中找重复数
- 1-2-05:填空:类型转换2
- 1072. Gas Station (30)
- 算法实验一 菲薄拉起数列
- Gost hash的C源码
- APP中注册时常用的发送验证码的Button,带倒计时重发功能
- clojure实现java类
- 关于COCOS2d-X中截图素材局部的Rect参数
- mysql 体系结构以及各种文件类型学习汇总
- CSS+DIV常用命名
- 模拟实现strncat
- 见闻下
- 网页设计大赛第九天
- Qt翻译---补充
- 高仿饿了么订餐界面
- 让并发和容错更容易:Akka示例教程