本题要求编写程序,计算两个有理数的和。
输入格式:
输入在一行中按照a1/b1 a2/b2
的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照a/b
的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
#include<stdio.h>
int gcd(int a, int b);
int main(void)
{
int a1, a2, b1, b2 = 0;
int common = 0;
int common_num1 = 0;
int common_num2 = 0;
int sum = 0;
int factor = 0;
scanf("%d/%d %d/%d", &a1, &b1, &a2, &b2);
common = b1 * b2;
common_num1 = a1 * b2;
common_num2 = a2 * b1;
sum = common_num1 + common_num2;
factor = gcd(common, sum);
common /= factor;
sum /= factor;
if(common != 1)
printf("%d/%d", sum, common);
else
printf("%d", sum);
return 0;
}
int gcd(int a, int b)
{
if(a % b == 0)
return b;
else
return gcd(b, a % b);
}