[Buổi 5][Số học modulo & lũy thừa nhanh][HW] Bài 2: Lũy thừa với modulo thay đổi
Lũy thừa với modulo thay đổi
Bối cảnh và bài toán
Một cụm máy chủ gồm nhiều node, mỗi node dùng một modulus riêng để kiểm tra lũy thừa. Với mỗi yêu cầu, hệ thống nhận bộ ba (b,p,m) và phải tính b^p mod m.
Do p và m đều có thể lớn, lời giải phải vừa nhanh vừa kiểm soát phép nhân trung gian.
Yêu cầu
Với mỗi truy vấn (b,p,m), tính b^p mod m.
Input
- Dòng 1: số nguyên
q. qdòng tiếp theo: mỗi dòng chứab p m.
Output
Với mỗi truy vấn, in b^p mod m.
Ràng buộc
1 <= q <= 10^50 <= b,p <= 2 * 10^91 <= m <= 2 * 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | q ≤ 50, p ≤ 10^5, m ≤ 10^6 | 01–04 |
| S2 | 30% | q ≤ 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
3
3 18132 17
17 1765 3
2374859 3029382 36123
Output
13
2
13195
Giải thích. Mỗi dòng sử dụng một modulus riêng, nhưng đều có thể xử lý bằng cùng nguyên lý lũy thừa nhanh.
Ví dụ 2
Input
3
10 0 7
0 5 13
123 456 1
Output
1
0
0
Giải thích. Mọi số mũ 0 cho kết quả 1 mod m; khi m=1, mọi phần dư bằng 0.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M02-B05-HW02 |
| Buổi | B05 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 25 phút |
| Time limit | 2 giây |
| Memory limit | 128 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++17 |
Nguồn: Phỏng theo UVa Online Judge 374 — Big Mod. Tham khảo: https://onlinejudge.org/external/3/374.pdf
Comments