[VTT Q4 Contest 09] Bài 3: Ước số [DIVISOR]
Xem dạng PDF
Gửi bài giải
Điểm:
3,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
DIVISOR.INP
Output:
DIVISOR.OUT
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python
Cho số nguyên dương ~n~. Liệt kê mọi ước nguyên dương của ~n~ theo thứ tự tăng dần và đánh số từ ~1~. Hãy tìm ước thứ ~k~ trong danh sách đó.
Dữ liệu
Một dòng chứa hai số nguyên dương ~n~ và ~k~ (~1 \le n \le 10^{15}~, ~1 \le k \le 10^9~).
Kết quả
In ra ước thứ ~k~ của ~n~, hoặc in ra -1 nếu ~n~ có ít hơn ~k~ ước.
Ví dụ
Ví dụ 1
DIVISOR.INP
100 8
DIVISOR.OUT
50
Ví dụ 2
DIVISOR.INP
9 5
DIVISOR.OUT
-1
Giải thích: Ở ví dụ 1, các ước của ~100~ là 1, 2, 4, 5, 10, 20, 25, 50, 100; ước thứ 8 là ~50~. Ở ví dụ 2, ~9~ chỉ có các ước 1, 3, 9 nên không có ước thứ 5.
Giới hạn
- Subtask 1 (50% số điểm): ~n \le 10^6~.
- Subtask 2 (30% số điểm): ~n \le 10^9~.
- Subtask 3 (20% số điểm): không có ràng buộc gì thêm.
Bình luận