Mục tiêu của bạn là viết một số mã sẽ xuất ra chuỗi thập phân duy nhất ngắn nhất cho phân số đầu vào. Không có hai phân số có cùng mẫu số có thể có cùng một đầu ra, mặc dù các phân số có mẫu số khác nhau có cùng một đại diện.
Lấy 2 số nguyên làm đầu vào, đầu tiên là tử số, thứ hai là mẫu số.
Ví dụ:
n d output
----- ------
0 13: 0.00
1 13: 0.07
2 13: 0.1
3 13: 0.2
4 13: 0.30
5 13: 0.38
Vân vân.
3/13
là phân số duy nhất có mẫu số là 13 bắt đầu bằng 0.2
, do đó không cần thêm chữ số nào. 4/13
và 5/13
cả hai đều bắt đầu bằng 0.3
, vì vậy một chữ số khác được yêu cầu để phân biệt giữa chúng.
Bạn có thể xuất các số lớn hơn -1 và nhỏ hơn 1 bằng hoặc không có số 0 trước dấu thập phân, miễn là đầu ra là nhất quán, nghĩa là 0.5
và .5
là cùng một số và đều hợp lệ. Không có số không hàng đầu khác được cho phép. Các số 0 triling phải được hiển thị nếu cần thiết để phân biệt đầu ra với giá trị khác.
Bạn không thể làm tròn bất kỳ số nào từ 0; chúng phải được cắt ngắn. Không được có không gian hàng đầu hoặc dấu. Có thể tùy chọn có một dòng mới duy nhất.
Thêm giá trị thử nghiệm:
n d output
---------- ------
0 1: 0 (this 0 may not be removed because there's no decimal point)
5 1: 5
0 3: 0.0 (or .0)
4 3: 1.3
5 3: 1.6
10 8: 1.2
11 8: 1.3
12 8: 1.5
-496 -38: 13.05
458 -73: -6.27
70 106: 0.660 (or .660)
255 123: 2.07
256 -123: -2.081
-257 -123: 2.089
-258 123: -2.09
258 -152: -1.697
-259 152: -1.70
260 152: 1.710
272 195: 1.39
380 247: 1.538
455 -455: -1.000
-44 891: -0.049 (or -.049)
123 1234: 0.099 (or .099)
Trong mỗi trường hợp, đầu ra và mẫu số là đủ để tìm ra tử số duy nhất.
/b
vài
đểp
bạn cũng có thể mã hóa chúng bên trongp
chính nó và chỉ lấy một tham số duy nhất. Ngoài ra, câu trả lời chỉ làn
để bạn không phải tính toán lại. Tôi có một phiên bản ES6 đệ quy một cách lỏng lẻo dựa trên điều này chỉ với 86 byte ...