SDUT-3849 分數四則運算
阿新 • • 發佈:2018-12-17
Problem Description
編寫程式,實現兩個分數的加減法
Input
輸入包含多行資料;
每行資料是一個字串,格式是"a/boc/d",其中a, b, c, d為數字(每個數字保證為正數並且不存在正號)。o是運算子"+"或者"-","*","\"。
資料以EOF結束,輸入資料保證合法。
Output
直接輸出結果,並且注意結果應符合書寫習慣,沒有多餘的符號、分子、分母,並且化簡至最簡分數形式。
Sample Input
1/100+3/100 1/4-1/2 1/3-1/3 1/2*2/1 1/2\1/2
Sample Output
1/25 -1/4 0 1 1
import java.util.Scanner; public class Main { public static int gcd(int a, int b) { if(b == 0)return a; else return gcd(b, a % b); } public static void main(String args[]) { Scanner in = new Scanner(System.in); int a, b, c, d; String s; char x; while(in.hasNext()) { s = in.next(); int i; a = b = c = d = 0; char si[] = s.toCharArray(); for(i = 0; i < si.length; i++) { if(si[i] == '/')break; a *= 10; a += si[i] - '0'; } for(i++; i < si.length; i++) { if(si[i] >= '0' && si[i] <= '9') { b *= 10; b += si[i] - '0'; } else break; } x = si[i]; for(i++; i < si.length; i++) { if(si[i] == '/')break; c *= 10; c += si[i] - '0'; } for(i++; i < si.length; i++) { d *= 10; d += si[i] - '0'; } int bi = b * d; int ai = 0; if(x == '+') { ai = a * d + c * b; } if(x == '-') { ai = a * d - c * b; } if(x == '*') { ai = a * c; } if(x == '\\') { ai = a * d; bi = b * c; } if(ai == 0) { System.out.println("0"); continue; } if(ai < 0) { System.out.printf("-"); ai = -ai; } int aa = gcd(ai, bi); ai = ai / aa; bi = bi / aa; if(bi == 1) { System.out.println(ai); } else { System.out.println(ai + "/" + bi); } } in.close(); } }