Lũy thừa chồng
Xem dưới dạng PDF
Gửi bài giải
Điểm:
30
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
đầu vào:
stdin
Đầu ra:
stdout
Tác giả:
Kiểu bài tập
Cho ba số nguyên dương a, b, c và số nguyên tố M. Yêu cầu: tính giá trị của biểu thức:
a^(b^c) mod M
Lưu ý: b^c là luỹ thừa tầng (b mũ c), không phải (a^b)^c.
Sử dụng định lý Fermat nhỏ: a^(p-1) ≡ 1 (mod p) với p nguyên tố và a không chia hết cho p. Do đó, tính b^c mod (M-1) trước, rồi dùng luỹ thừa nhị phân (binary exponentiation) để tính a^(kết_quả) mod M.
Đầu vào
Một dòng duy nhất chứa bốn số nguyên a, b, c, M (\(1 \le a\), b, \(c \le 10^18\), \(1 \le M \le 2\times10^9\), M là số nguyên tố).
Đầu ra
Một số nguyên duy nhất là kết quả của biểu thức.
Ví dụ
Input:
2 3 2 1000000007
Output:
512
Giải thích
\(b^c = 3^2 = 9, 2^9 = 512\).
Ràng buộc & Subtasks
| Subtask | Điểm | Ràng buộc |
|---|---|---|
| 1 | 40% | Giới hạn nhỏ |
| 2 | 60% | Không có ràng buộc gì thêm |
Nhận xét