分数求和

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); 
} 


注意:似乎仍有小问题,欢迎指正!大笑
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值