#include <stdio.h>
#include <stdlib.h>
struct fenshu
{
int fenzi;
int fenmu;
};
int main()
{
struct fenshu f1,f2;
int sum,minus,t,i;
int fenmu1,fenmu2;
int min,sign1=1,sign2=1;
scanf("%d%d%d%d",&f1.fenzi,&f1.fenmu,&f2.fenzi,&f2.fenmu);
t=f1.fenmu*f2.fenmu;
sum=f1.fenzi*f2.fenmu+f2.fenzi*f1.fenmu;
minus=f1.fenzi*f2.fenmu-f2.fenzi*f1.fenmu;
if(sum<0)
{
sign1=-1;
sum*=-1;
}
min=sum<t?sum:t;
i=min; //从大到小
while(sum!=0&&sum!=1&&t!=1&&i>0)
{
if(sum%i==0&&t%i==0)
{
sum/=i;
t/=i;
}
i--;
}
fenmu1=t;
if(minus<0)
{
sign2=-1;
minus*=-1;
}
t=f1.fenmu*f2.fenmu;
min=minus<t?minus:t;
i=min;
while(minus!=0&&minus!=1&&i>0)
{
if(minus%i==0&&t%i==0)
{
minus/=i;
t/=i;
}
i--;
}
fenmu2=t;
printf("%d %d\n%d %d",sign1*sum,fenmu1,sign2*minus,fenmu2);
return 0;
}
XDOJ两个分数的加法和减法
最新推荐文章于 2025-05-18 19:09:45 发布