OJ.2480: 分數求和
阿新 • • 發佈:2019-01-06
2480: 分數求和
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 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; }