Gửi bài giải
Điểm:
0,78 (OI)
Giới hạn thời gian:
0.6s
Giới hạn bộ nhớ:
512M
Input:
stdin
Output:
stdout
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch
Cho một số ~P~ (~1 \le~ ~P~ ~\le 10^{20000}~). Tìm hai số tự nhiên ~X~ và ~Y~ sao cho ~X \times~ ~(X+1)~ ~\times \dots \times Y = P~.
Input
Một số ~P~ duy nhất. Dữ liệu vào đảm bảo luôn tìm được kết quả ~X~, ~Y~ thỏa mãn sao cho ~1 \le X \le Y \le 10^{5}~.
Nếu có nhiều đáp án thỏa mãn với ~1 \le X \le Y \le 10^{5}~, chọn đáp án có ~X~ nhỏ nhất.
Output
In ra hai số ~X~, ~Y~.
Sample Input
60
Sample Output
3 5
Bình luận
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
nếu code vét big num bài này thì đc bao nhiêu test ạ
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
ban can hoc cach hoi bai truoc khi hoc code
thay mặt thằng em xin lỗi cộng đồng VNOJ
That's fine, bro!
đại ca này khó tính thế
Chào các bạn.
Ban đầu mình tự cài bignum trên C++ nhưng bị chạy quá thời gian, nên chuyển sang Python 3 cũng vẫn không được. Các bạn có gợi ý cải tiến gì không nhỉ?
Ý tưởng thuật toán mình lấy ở đây nhé.
Cảm ơn các bạn đã dành thời gian giúp mình.
Việc sử dụng số lớn, 1 là không ổn trong bài này, chi phí cho làm việc với số lớn là quá lớn. Tỉ dụ 1 phép nhân/chia làm trong ~O(len)~ với ~len~ là số chữ số, vậy độ phức tạp ít nhất phải là ~O(n\times len)~, mà ~len~ còn có thể lớn hơn cả ~n~, do đó chương trình sẽ chạy rất chậm. Nhưng thứ 2 là bài này có thể giải không sử dụng số lớn, và cái đó là cái key idea của bài, nên bạn chịu khó suy nghĩ thêm, hoặc tham gia VNOI discord để thảo luận :)).
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bạn để P kiểu int thì code này sao chạy đc :v