[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ÀM BÀI

Points: 100
Time limit: 2.0s
Memory limit: 128M

Author:
Problem types

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.
  • q dòng tiếp theo: mỗi dòng chứa b p m.

Output

Với mỗi truy vấn, in b^p mod m.

Ràng buộc

  • 1 <= q <= 10^5
  • 0 <= b,p <= 2 * 10^9
  • 1 <= 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

There are no comments at the moment.

Zalo