[Buổi 5][Số học modulo & lũy thừa nhanh][HW] Bài 3: Chứng chỉ Bézout chuẩn hóa
Chứng chỉ Bézout chuẩn hóa
Bối cảnh và bài toán
Một hệ thống kiểm chứng cần sinh "chứng chỉ Bézout" cho nhiều cặp số nguyên dương. Với mỗi cặp (a,b), chứng chỉ gồm ba số (x,y,d) sao cho d=gcd(a,b) và a*x+b*y=d.
Để các node khác nhau luôn xuất đúng cùng một chứng chỉ, hệ thống chuẩn hóa x về khoảng 0 <= x < b/d; y sau đó được xác định duy nhất.
Yêu cầu
Với mỗi cặp (a,b), hãy in bộ (x,y,d) thỏa a*x+b*y=d=gcd(a,b) và 0 <= x < b/d.
Input
- Dòng 1: số nguyên
q. qdòng tiếp theo: mỗi dòng chứa hai số nguyên dươnga b.
Output
Với mỗi truy vấn, in x y d theo chuẩn của đề.
Ràng buộc
1 <= q <= 10^51 <= a,b <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | q ≤ 50, a,b ≤ 10^4 | 01–04 |
| S2 | 30% | q ≤ 5000, a,b ≤ 10^9 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
2
4 6
17 17
Output
2 -1 2
0 1 17
Giải thích. Với 4,6, d=2, khoảng chuẩn của x là [0,2]; x=2 cho 4*2+6*(-1)=2. Với 17,17, b/d=1 nên x=0.
Ví dụ 2
Input
2
35 12
10 6
Output
11 -32 1
2 -3 2
Giải thích. Các hệ số được chuẩn hóa theo khoảng đã nêu, nên output là duy nhất.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M02-B05-HW03 |
| 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ị | 35 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 10104 — Euclid Problem. Tham khảo: https://onlinejudge.org/external/101/10104.pdf
Comments