您的位置:首页 > 其它

OJ.2480: 分数求和

2017-08-24 16:47 393 查看


2480: 分数求和

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 320  Solved: 52

[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 时只需要输出分子。


有点坑的一道题,由于一个小问题交了好多次,就是测试不出哪出问题了,最后终于发现是IF语句的问题。

#include <stdio.h>
#include <stdlib.h>
int gcd(int x,int y)
{
int r;
while(y>0)
{
r=x%y;
x=y;
y=r;
}
return x;
}
int lcm(int x,int y)
{
return x*y/gcd(x,y);
}
int main()
{
int a,b,c,d;
while(~scanf("%d %d %d %d",&a,&b,&c,&d))
{
if(b==0||d==0)
continue;
int q,w;
w=lcm(b,d);
q=a*(w/b)+c*(w/d);
int e=gcd(w,q);
if(w==1)
printf("%d\n",q);
else if(q%w==0)
printf("%d\n",q/w);
else
printf("%d/%d\n",q/e,w/e);
}
return 0;
}
一定要特别注意细节和格式,小细节可以毁掉一个程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: