输入格式:
输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。
输出格式:
在一行中按照“a/b”的格式输出两个有理数的和。注意必须是该有理数的最简分数形式,若分母为1,则只输出分子。
输入样例1:
1/3 1/6
输出样例1:
1/2
输入样例2:
4/3 2/3
输出样例2:
2
主要考量了结构体的基本使用,主要编程思想先输入,然后求分母公约数,最后化简输出。除此之外,还可以直接相乘,然后化简输出。提供一种AC的Sources Codes
#include <iostream>
using namespace std;
struct Data
{
int fengzi;
int fengmu;
};
int gongyueshu(int a,int b)
{
int i;
int result=1;
for (i=1; i<=a&&i<=b; i++) {
if (a%i==0&&b%i==0) {
result*=i;
a/=i;
b/=i;
i=1;
}
}
result=result*a*b;
return result;
}
int main(int argc, const char * argv[])
{
Data a,b;
int m,n;
scanf("%d/%d %d/%d",&a.fengzi,&a.fengmu,&b.fengzi,&b.fengmu);
m=gongyueshu(a.fengmu,b.fengmu);
n=a.fengzi*m/a.fengmu+b.fengzi*m/b.fengmu;
for (int i=1; i<=m&&i<=n; i++) {
if (m%i==0&&n%i==0) {
m/=i;
n/=i;
i=1;
}
}
if (m==1) {
printf("%d\n",n);
}
else
{
printf("%d/%d\n",n,m);
}
return 0;
}