P161PROG - ROUND 1G - Số đặc biệt

Người Gửi: Sai

  • Problem:

Một số x được gọi là đặc biệt nếu không tồn tại 1 số nguyên a > 1 nào mà bình phương của nó là ước của x.  
Cho 1 số n. Hãy tìm ước lớn nhất của n là số đặc biệt!


Input

Một dòng chứa số n (1 <= n <= 10^12).
Output
Đáp án của bài toán.
Example:
Input
10
Output:
10

Input
12
Output:
6
  • Solution:


Có nghĩa là bạn sẽ phải tìm ước lớn nhất của n là x và tất cả các ước của x không phải là số chính phương.
 - Tìm các ước của n -> x1, x2, ... - Sắp xếp tăng dần hoặc giảm dần
- Với mỗi x: thì tìm tất cả các ước > 1 của x xem có ước nào là số chính phương không? Nếu không có thì x đó là số đặc biệt cần tìm.
- Duyệt từ đầu đến cuối hay cuối về đầu tùy thuộc vào giảm dần hay tăng dần.
 

  • Code:

C++:



JAVA:


Share this

Related Posts

Previous
Next Post »