Câu hỏi này không cần áp dụng cho việc chỉ chấm dứt số thập phân - lặp lại số thập phân cũng có thể được chuyển đổi thành phân số thông qua thuật toán.
Nhiệm vụ của bạn là tạo một chương trình lấy số thập phân lặp lại làm đầu vào và xuất ra tử số và mẫu số tương ứng (theo thuật ngữ thấp nhất) tạo ra sự mở rộng thập phân đó. Phân số lớn hơn 1 nên được biểu diễn dưới dạng phân số không chính xác như thế nào 9/5
. Bạn có thể cho rằng đầu vào sẽ tích cực.
Số thập phân lặp lại sẽ được đưa ra trong định dạng này:
5.3.87
với tất cả mọi thứ sau khi dấu chấm thứ hai lặp lại, như thế này:
5.3878787878787...
Chương trình của bạn sẽ xuất hai số nguyên biểu thị tử số và mẫu số, được phân tách bằng dấu gạch chéo (hoặc dạng tương đương trong ngôn ngữ của bạn nếu bạn không xuất văn bản thuần túy):
889/165
Lưu ý rằng việc kết thúc số thập phân sẽ không có gì sau dấu chấm thứ hai và số thập phân không có phần thập phân không lặp lại sẽ không có gì giữa hai dấu chấm.
Các trường hợp thử nghiệm
Các trường hợp kiểm tra này bao gồm tất cả các trường hợp góc yêu cầu:
0..3 = 1/3
0.0.3 = 1/30
0.00.3 = 1/300
0.6875. = 11/16
1.8. = 9/5
2.. = 2/1
5..09 = 56/11
0.1.6 = 1/6
2..142857 = 15/7
0.01041.6 = 1/96
0.2.283950617 = 37/162
0.000000.1 = 1/9000000
0..9 = 1/1
0.0.9 = 1/10
0.24.9 = 1/4
Nếu bạn muốn, bạn cũng có thể giả sử rằng các phân số không có phần nguyên không có gì ở bên trái của dấu chấm đầu tiên. Bạn có thể kiểm tra điều đó với các trường hợp kiểm tra tùy chọn sau:
.25. = 1/4
.1.6 = 1/6
..09 = 1/11
.. = 0/1
(in lowest terms)
tức là phần phải được đơn giản hóa.
13
thay vì 13/1
không?
1.9999...
và đầu ra này2/1
1.9999.
là 19999/10000
, để có được 2/1
bạn cần 1..9
, phải không?
9/99
:)?