88. 分数加法

3800 分数加法

 

 时间限制: 1 s
 空间限制: 1000 KB
 题目等级 : 白银 Silver
题目描述 Description

输入两个分数A和B,输出他们的和。

输入描述 Input Description

a/b c/d

b,d是分母

a,c是分子

输出描述 Output Description

a/b+c/d和

要约分

样例输入 Sample Input

1/1 1/1

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

输入为int

分类标签 Tags 点此展开 

暂无标签
代码:
#include
using namespace std;
#include
int a1,a2,b1,b2,c1,c2;
int gyshu(int a,int b)
{
if(a
swap(a,b);
int c=a-b;
while(b!=c&&c>=0)
{
a=b;
b=c;
if(a
   swap(a,b);
c=a-b;
}
if(b==c) return c;
return 1;
}
int gbshu(int a,int b)
{
return a*b/gyshu(a,b);
}
int main()
{
scanf("%d/%d%d/%d",&a1,&a2,&b1,&b2);//注意用scanf把输入的“/”吃掉,否则会报错 
int k=a2;
if(a2!=b2)//下面是分数加法的过程 
{
       k=gbshu(a2,b2);
}
a1=a1*(k/a2);b1*=(k/b2);
c2=k;
c1=a1+b1;
k=gyshu(c1,c2);//最后结果的约分 
c1/=k;
c2/=k;
if(c2==1)
printf("%d",c1);
else{
printf("%d/%d",c1,c2);
}
return 0;
}
原文地址:https://www.cnblogs.com/c1299401227/p/5370732.html