讨论 / 楼下的谁说数据有误
lijie201602 2017-09-06 23:01:22
点我顶贴 收藏 删除
#include<cstdio>

int gcd(int a,int b)

{

while(b!=0) { int c=a%b; a=b; b=c; }

return a;

}

int main()

{

int t; scanf("%d",&t);

for(int i=1;i<=t;i++)

{

int a,b,c,d; scanf("%d/%d-%d/%d",&a,&b,&c,&d);

int k=gcd(a,b); a/=k; b/=k;

k=gcd(c,d); c/=k; d/=k;

bool flag=true;

int fz=a*d-b*c,fm=b*d;

if(fz<0) { flag=false; fz=-fz; }

if(fm<0) { if(flag==false) flag=true; fm=-fm; }

if(flag==false) printf("-");

k=gcd(fz,fm); fz/=k; fm/=k;

if(fm==1 || fz==0) printf("%d\n", fz);

else printf("%d/%d\n",fz,fm);

}

return 0;

}

#1 lijie201602@2017-09-09 23:51:23
回复 删除
#include<cstdio>

int gcd(int a,int b)

{

while(b!=0) { int c=a%b; a=b; b=c; }

return a;

}

int main()

{

int t; scanf("%d",&t);

for(int i=1;i<=t;i++)

{

int a,b,c,d; scanf("%d/%d-%d/%d",&a,&b,&c,&d);

int k=gcd(a,b); a/=k; b/=k;

k=gcd(c,d); c/=k; d/=k;

int fz=a*d-b*c,fm=b*d;

if(fz<0) { printf("-"); fz=-fz; }

k=gcd(fz,fm); fz/=k; fm/=k;

if(fm==1 || fz==0) printf("%d\n", fz);

else printf("%d/%d\n",fz,fm);

}

return 0;

}

#2 lijie201602@2017-09-09 23:51:31
回复 删除
优化了一下
查看更多回复
提交回复