Editorial for Lũy thừa của 3
Submitting an official solution before solving the problem yourself is a bannable offence.
Subtask 1
Vì chỉ có 38 giá trị
ĐPT:
Sutask 2
Số chữ số của
Vì số chữ số của
Cho nên, ta chỉ cần duyệt long long
được. Thay vào đó, ta xử lý số lớn bằng kiểu dữ liệu string
hoặc vector
. Lưu ý break sớm nếu giá trị
ĐPT:
Subtask 3
Sử dụng ý tưởng của subtask 2, ta rút được
Dễ dàng thấy được giới hạn này sẽ không cho ta sử dụng bignum được.
Or can it?
Bài toán có thể giải quyết trong
bằng nhân lũy thừa nhị phân bignum kết hợp vớt fft và chuyển về hệ cơ số 1e9.
Thay vào đó, ta dùng kỹ thuật hashing. Với mỗi long long
, thì ta có thể tiền xử lý các giá trị hash của map
để kiểm tra nhanh và đảm bảo rủi ro bị trùng hash (Lưu ý không được dùng unordered_map
!!!).
Việc dùng
unordered_map
tuy chạy nhanh trong một số trường hợp nhưng trường hợp xấu nhất vẫn luôn là, trên một số trang thi như codeforces thì bạn có thể bị hack bởi người khác nếu bị lộ code.
Việc tính các giá trị hash của
ĐPT:
Comments
Bài này dùng... FFT 😵