1088. Rational Arithmetic (20)

来源:互联网 发布:淘宝运作流程 编辑:程序博客网 时间:2024/06/05 19:23

PAT测试不支持%I64d 可以使用%lld,,被坑了好久。但是题目没有难度

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>using namespace std;long long gcd(long long a,long long b){if(a<0){a=-a;}if(b<0){b=-b;}long long t;if(a<b){t=a;a=b;b=t;}long long n;while(b){n=a%b;a=b;b=n;}return a;}void print1(long long num,long long deno){long long flag=gcd(deno,num);int temp=0;num=num/flag;deno=deno/flag;if((num*deno)<0){cout<<'(';temp=1;}if(deno<0){num=-num;deno=-deno;}long long num1=abs(num);if(num==0){cout<<0;}else if(deno==1){cout<<num;}else if(num1<deno){cout<<num<<'/'<<deno;}else{long long k=num/deno;num=num1%deno;cout<<k<<' '<<num<<'/'<<deno;}if(temp){cout<<')';}return ;}void Sum(long long a,long long b,long long c,long long d){long long deno,num,flag;deno=b*d;num=a*d+c*b;print1(a,b);cout<<' '<<'+'<<' ';print1(c,d);cout<<' '<<'='<<' ';print1(num,deno);cout<<endl; return ;}void Dif(long long a,long long b,long long c,long long d){long long deno,num,flag;deno=b*d;num=a*d-c*b;//flag=gcd(deno,num);//num=num/flag;deno=deno/flag;print1(a,b);cout<<' '<<'-'<<' ';print1(c,d);cout<<' '<<'='<<' ';print1(num,deno);cout<<endl;return ;}void Pro(long long a,long long b,long long c,long long d){long long deno,num,flag;deno=b*d;num=a*c;//flag=gcd(deno,num);//num=num/flag;deno=deno/flag;print1(a,b);cout<<' '<<'*'<<' ';print1(c,d);cout<<' '<<'='<<' ';print1(num,deno);cout<<endl;return ;}void Quo(long long a,long long b,long long c,long long d){if(c==0){print1(a,b);cout<<' '<<'/'<<' ';print1(c,d);cout<<' '<<'='<<' ';printf("Inf");return ;}long long deno,num,flag;deno=b*c;num=a*d;//flag=gcd(deno,num);//num=num/flag;deno=deno/flag;print1(a,b);cout<<' '<<'/'<<' ';print1(c,d);cout<<' '<<'='<<' ';print1(num,deno);return ;}int main(){long long a,b,c,d;scanf("%lld/%lld%lld/%lld",&a,&b,&c,&d);//输入用%lld//cout<<a<<' '<<b<<' '<<c<<' '<<d<<endl;Sum(a,b,c,d);Dif(a,b,c,d);Pro(a,b,c,d);Quo(a,b,c,d);return 0;} 


0 0