Xây dựng lớp Fraction biểu diễn phân số tử/mẫu. Phân số luôn được rút gọn ngay khi tạo (chia cả tử và mẫu cho ƯCLN), và dấu âm luôn nằm ở tử số (mẫu số luôn dương).
Fraction gồm int num, den (private), constructor Fraction(num, den) tự động rút gọn và đẩy dấu âm về tử.add(Fraction o), sub(Fraction o), mul(Fraction o) trả về Fraction mới đã rút gọn.boolean equals(Fraction o) trả về true khi hai phân số cùng giá trị.int compareTo(Fraction o) trả về -1, 0, 1.String toString() trả về "num/den". Nếu den = 1 thì chỉ in num.main, đọc một biểu thức gồm 2 phân số và một phép toán: <a> <b> <c> <d> <op> (op ∈ {+, -, *, =, <}). In:
Fraction.toString().true hoặc false.LESS, EQUAL, GREATER.<a> <b> <c> <d> <op> với op ∈ {+, -, *, =, <}Mỗi truy vấn 1 dòng theo quy tắc trên.
Ví dụ:
Đầu vào:
4
1 2 1 3 +
2 4 1 2 =
3 4 1 2 -
1 3 2 5 <
Đầu ra:
5/6
true
1/4
LESS
Giải thích:
Đầu vào:
3
2 3 2 3 *
6 8 3 4 =
-1 2 1 2 +
Đầu ra:
4/9
true
0
Giải thích:
Đầu vào:
1
0 5 0 7 =
Đầu ra:
true
Đầu vào:
2
3 1 2 1 +
5 1 5 1 =
Đầu ra:
5
true
Đầu vào:
3
-3 4 1 2 <
1 2 -1 2 <
1 2 1 2 <
Đầu ra:
LESS
GREATER
EQUAL
Đang tải editor...