Java——分數四則運算
阿新 • • 發佈:2018-11-29
分數四則運算
Time Limit: 1000 ms Memory Limit: 65536 KiB
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
AC程式碼:
import java.util.Scanner; class Fs { int fz, fm; public Fs(int x, int y) { fz = x; fm = y; } public Fs add(Fs fs) { int Fz = fz * fs.fm + fm * fs.fz; int Fm = fm * fs.fm; return new Fs(Fz, Fm); } public Fs sub(Fs fs) { int Fz = fz * fs.fm - fm * fs.fz; int Fm = fm * fs.fm; return new Fs(Fz, Fm); } public Fs nul(Fs fs) { int Fz = fz * fs.fz; int Fm = fm * fs.fm; return new Fs(Fz, Fm); } public Fs div(Fs fs) { int Fz = fz * fs.fm; int Fm = fm * fs.fz; return new Fs(Fz, Fm); } public int gcd(int n, int m) { //求最小公倍數 int r = n % m; while (r != 0) { n = m; m = r; r = n % m; } return m; } public String toString() { int d = gcd(fz, fm); fz /= d; fm /= d; String str = fz * fm < 0 ? "-" : ""; if (fz % fm == 0) { str += Math.abs(fz / fm); //絕對值 } else { str += Math.abs(fz) + "/" + Math.abs(fm); } return str; } } public class Main { public static void main(String[] args) { Scanner mi = new Scanner(System.in); while (mi.hasNext()) { String str = mi.nextLine(); String[] p = str.split("\\D+"); int a = Integer.parseInt(p[0]); int b = Integer.parseInt(p[1]); int c = Integer.parseInt(p[2]); int d = Integer.parseInt(p[3]); Fs fs = new Fs(a, b); Fs fs1 = new Fs(c, d); String[] q = str.split("\\d+"); char op = q[2].charAt(0); switch (op) { case '+': fs = fs.add(fs1); break; case '-': fs = fs.sub(fs1); break; case '*': fs = fs.nul(fs1); break; case '\\': fs = fs.div(fs1); break; } System.out.println(fs); } mi.close(); } }
——————
餘生還請多多指教!