1. 程式人生 > >OJ.2480: 分數求和

OJ.2480: 分數求和

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;
}
一定要特別注意細節和格式,小細節可以毀掉一個程式。