canuc80k0816·17/50

Lũy Thừa Chưa Dùng

Nộp bài trên LQDOJ

Bài 0.9 · Arithmetic

Ban đầu có số nguyên dương . Một thao tác chọn một số có dạng , trong đó là số nguyên tố và là số nguyên dương, sao cho:

  • giá trị hiện tại của chia hết cho (tức là một ước của );
  • giá trị chưa từng được chọn ở thao tác trước.

Sau đó thay bằng . Hãy tìm số thao tác lớn nhất có thể thực hiện. Có thể dừng khi không còn lựa chọn hợp lệ; không bắt buộc giá trị cuối cùng bằng .

Input

  • Một dòng chứa số nguyên .

Output

  • In số thao tác lớn nhất.

Constraints

  • .

Scoring

  • Subtask ( số điểm): .
  • Subtask ( số điểm): Không có giới hạn bổ sung.

Example

Test 1

Input

72

Output

3

Giải thích: Có thể lần lượt chọn và : tích ba giá trị là chia , và ba lũy thừa đều khác nhau. Không thể thực hiện thao tác thứ tư.

Lời giải tóm tắt
  • Phân tích: Giả sử nguyên tố p có số mũ E trong N. Các lũy thừa của cùng p được chọn phải có số mũ dương khác nhau. Muốn có nhiều thao tác nhất, ta dùng các số mũ nhỏ nhất 1,2,...,k; chúng tiêu thụ tổng k(k+1)/2. Vì vậy đóng góp của p là k lớn nhất sao cho tổng này không vượt E.
  • Phân tích: Phân tích N thành thừa số nguyên tố, với mỗi số mũ ta trừ lần lượt 1,2,3,... và cộng số lần trừ được.
  • Chứng minh đúng: Bất kỳ k số mũ dương phân biệt nào cũng có tổng ít nhất 1+...+k, nên khi tổng đó vượt E thì k thao tác với p là bất khả thi. Khi tổng không vượt E, chọn đúng p^1,p^2,...,p^k là hợp lệ. Các nguyên tố khác nhau dùng phần số mũ độc lập, nên tổng các tối ưu riêng chính là tối ưu toàn cục.
  • Độ phức tạp: O(sqrt(N)) để phân tích, O(1) bộ nhớ phụ.