[VTT Q4 Contest 02] Bài 2: Tháp đầy đủ [TOWER]

Xem dạng PDF

Gửi bài giải


Điểm: 2,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: TOWER.INP
Output: TOWER.OUT

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python

Một tháp là một chồng các đĩa đồng trục, đĩa nhỏ nằm trên đĩa lớn. Tháp được gọi là tháp ước số nếu đường kính mọi đĩa là số nguyên dương và đường kính của mỗi đĩa là ước của đường kính đĩa nằm ngay dưới nó.

Một tháp ước số là đầy đủ nếu không thể chèn thêm đĩa vào giữa hai đĩa liền kề nào mà vẫn giữ được tính chất tháp ước số. Cụ thể, với cặp số nguyên dương ~(a, b)~ mà ~a~ là ước của ~b~, một tháp đầy đủ của ~(a, b)~ là dãy đường kính các đĩa (từ trên xuống dưới) ~x_0, x_1, \dots, x_k~ thỏa mãn:

  • ~x_0 = a~ và ~x_k = b~;
  • với mỗi ~i = 0, 1, \dots, k-1~, ~x_i~ là ước của ~x_{i+1}~;
  • không tồn tại số ~y~ nào với ~x_i < y < x_{i+1}~ mà ~x_i~ là ước của ~y~ và ~y~ là ước của ~x_{i+1}~.

Hình minh họa: một tháp gồm 4 đĩa chồng lên nhau, từ trên xuống lần lượt có đường kính 3, 9, 18, 36.

Ví dụ với cặp ~(3, 36)~: dãy ~(3, 9, 18, 36)~ là tháp đầy đủ; còn dãy ~(3, 12, 36)~ thì chưa đầy đủ vì có thể chèn 6 vào giữa 3 và 12 để được ~(3, 6, 12, 36)~.

Chiều cao của tháp là số đĩa của nó; trọng số của tháp là tổng đường kính các đĩa ~x_0 + x_1 + \dots + x_k~. Với cặp ~(3, 36)~ có các tháp đầy đủ ~(3, 9, 18, 36)~, ~(3, 6, 12, 36)~, ~(3, 6, 18, 36)~, tất cả đều cao 4 và có trọng số lần lượt là 66, 57, 63.

Yêu cầu: cho cặp ~(a, b)~, tìm chiều cao và trọng số của tháp đầy đủ có trọng số nhỏ nhất.

Dữ liệu

  • Một dòng duy nhất gồm hai số nguyên dương ~a~ và ~b~ (~1 \le a, b \le 10^{12}~).

Kết quả

  • In ra -1 nếu không tồn tại tháp đầy đủ ứng với cặp ~(a, b)~.
  • Ngược lại, in ra chiều cao và trọng số của tháp đầy đủ có trọng số nhỏ nhất.

Ví dụ

TOWER.INP

3 36

TOWER.OUT

4 57

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.