题目:两个分数的加法和减法 问题描述 实现两个分数的加法和减法运算,负分数的分子为负数。
输入格式 第一行输入第一个分数的分子和分母,两者之间用空格隔开,分子在前,分母在后。第 二行输入第二个分数的分子和分母,两者之间用空格隔开,分子在前,分母在后。
输出格式 输出两行,第一行输出两个分数的和的分子和分母,两者之间用空格隔开,分子在前, 分母在后。第二行输出两个分数的差的分子和分母,两者之间用空格隔开,分子在前,分母 在后。
样例输入 1
1 2
1 3
样例输出 1
5 6
1 6
样例输入 2
1 4
-5 6
样例输出 2
-7 12
13 12
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
long long common(long long a, long long b)
{
if (a < 0)
{
a = -a;
}
while (long long tmp = a % b)
{
a = b;
b = tmp;
}
return b;
}
int main()
{
long long a = 0;
long long b = 0;
long long c = 0;
long long d = 0;
scanf("%lld %lld %lld %lld", &a, &b, &c, &d);
long long add_a = a * d + b * c;
long long denom1 = b * d;
long long sub_a = a * d - b * c;
long long denom2 = b * d;
long long com1 = common(add_a, denom1);
add_a /= com1;
denom1 /= com1;
long long com2 = common(sub_a, denom2);
sub_a /= com2;
denom2 /= com2;
printf("%lld %lld\n%lld %lld", add_a, denom1, sub_a, denom2);
return 0;
}