[Buổi 5][Số học modulo & lũy thừa nhanh][WS] Bài 1: Máy chủ lũy thừa modulo
Máy chủ lũy thừa modulo
Bối cảnh và bài toán
Một dịch vụ xác thực sinh mã bằng biểu thức a^b mod 1 000 000 007. Hệ thống phải xử lý một lượng lớn yêu cầu, trong khi số mũ có thể lên tới hàng tỷ.
Không thể thực hiện b phép nhân cho từng yêu cầu.
Yêu cầu
Với mỗi cặp (a,b), tính a^b mod 1 000 000 007. Trong bài này quy ước 0^0 = 1.
Input
- Dòng 1: số nguyên
q. qdòng tiếp theo: mỗi dòng chứa hai số nguyêna b.
Output
Với mỗi truy vấn, in giá trị a^b mod 1 000 000 007 trên một dòng.
Ràng buộc
1 <= q <= 2 * 10^50 <= a,b <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | q ≤ 50, b ≤ 10^5 | 01–04 |
| S2 | 30% | q ≤ 2*10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
3
3 4
2 8
123 123
Output
81
256
921450052
Giải thích. Các lũy thừa được lấy modulo 1 000 000 007 sau quá trình tính.
Ví dụ 2
Input
3
0 0
0 5
1000000008 2
Output
1
0
1
Giải thích. Theo quy ước, 0^0=1. Ngoài ra 1000000008 ≡ 1 (mod 1000000007).
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M02-B05-WS01 |
| Buổi | B05 |
| Loại bài | WORKSHOP |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 30 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++17 |
Nguồn: Phỏng theo CSES Problem Set — Exponentiation (Task 1095). Tham khảo: https://cses.fi/problemset/task/1095/
Comments