您的位置:首页 > 其它

分数求和

2014-03-05 16:39 162 查看

Problem F: 分数求和

Time Limit: 1 Sec Memory Limit:
128 MB

Submit: 270 Solved: 34

[Submit][Status][Web
Board]

Description

求两分数相加,输出结果。

Input

题目有多组测试数据,直到文件尾。

每组测试数据需要输入4个整数:

nume1, deno1为第一个数的分子和分母,

nume2, deno2为第二个数的分子和分母。

Output

两分数相加的结果。每个测试数据占一行。

输出格式为“nume3/deno3”,该格式对结果为整数的情况除外。

分母为0的情况不考虑。

Sample Input

1 3 1 2
3 25 4 15
1 4 3 4
1 4 1 4


Sample Output

5/6
29/75
1
1/2


HINT

求最大公约数并约分,并注意分母为 1 时只需要输出分子。
#include <iostream>
using namespace std;
int main ()
{
int m,n,k,t,h,l,sum1,sum2,min;
int max(int ,int ); //定义一个求最大公约数的函数
while( cin>>m>>n>>k>>t) //...
{

h=max(n,t); //求最大公约数h
min=(n*t)/h; //求最小公倍数min
sum1=m*(min/n)+k*(min/t);
sum2=min;
l=max(sum1,sum2);//判断分子,分母的最大公约数是不是1
if(sum2==1)
cout<<sum1<<endl;
else if(sum1%sum2==0)
cout<<sum1/sum2<<endl;
else
{
sum1=sum1/l;
sum2=sum2/l;
cout<<sum1<<'/'<<sum2<<endl;
}
}

return 0;
}
int max(int v,int u)
{
int t,r;
if(v>u)
{
t=u;u=v;v=t;
}
while((r=u%v)!=0)
{
u=v;v=r;
}
return (v);
}


注意:似乎仍有小问题,欢迎指正!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: