#284. Phân số Ai Cập (FRACTION)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: Trình chấm ngoài
Đưa lên bởi: Trùm CUỐI

Đề bài

Ở Ai Cập cổ đại, người ta sử dụng tổng các phân số đơn vị (có dạng \dfrac{1}{a} , với a là số tự nhiên) để biểu diễn mọi số hữu tỉ. Ví dụ: \dfrac{2}{3} = \dfrac{1}{2} + \dfrac{1}{6} , nhưng không cho phép \dfrac{2}{3} = \dfrac{1}{3} + \dfrac{1}{3} vì các số hạng trong tổng có mẫu số giống nhau. Đối với một phân số \dfrac{a}{b} , có rất nhiều cách biểu diễn, nhưng cách nào là tốt nhất? Tiêu chí đánh giá như sau:

  1. Số lượng số hạng ít hơn thì tốt hơn.
  2. Nếu số lượng số hạng bằng nhau, phân số nhỏ nhất trong tổng càng lớn càng tốt (tức là mẫu số của phân số cuối cùng càng nhỏ càng tốt).

Ví dụ:

\begin{aligned} \frac{19}{45} &= \frac{1}{3} + \frac{1}{12} + \frac{1}{180}\\ \frac{19}{45} &= \frac{1}{3} + \frac{1}{15} + \frac{1}{45}\\ \frac{19}{45} &= \frac{1}{3} + \frac{1}{18} + \frac{1}{30}\\ \frac{19}{45} &= \frac{1}{4} + \frac{1}{6} + \frac{1}{180}\\ \frac{19}{45} &= \frac{1}{5} + \frac{1}{6} + \frac{1}{18}\\ \end{aligned}

Cách tốt nhất là cách cuối cùng, vì \dfrac{1}{18} lớn hơn \dfrac{1}{180}, \dfrac{1}{45}, \dfrac{1}{30} . Lưu ý, có thể có nhiều lời giải tối ưu. Ví dụ:

\begin{aligned} \frac{59}{211} &= \frac{1}{4} + \frac{1}{36} + \frac{1}{633} + \frac{1}{3798}\\ \frac{59}{211} &= \frac{1}{6} + \frac{1}{9} + \frac{1}{633} + \frac{1}{3798}\\ \end{aligned}

Do cả hai cách đều có phân số nhỏ nhất giống nhau, nên cả hai đều là lời giải tối ưu.

Cho a, b , hãy lập trình tính toán cách biểu diễn tốt nhất. Đảm bảo lời giải tối ưu thỏa mãn: phân số nhỏ nhất \ge \cfrac{1}{10^7} .

Dữ liệu:

  • Một dòng chứa hai số nguyên, lần lượt là giá trị của a b .

Kết quả:

  • Xuất ra một vài số, sắp xếp từ nhỏ đến lớn, lần lượt là mẫu số của các phân số đơn vị.

Ví dụ:

Dữ liệu:

19 45

Kết quả:

5 6 18

Giới hạn: 0 \lt a \lt b \lt 1000