canuc80k4714·15/21

Mẫu Phương Trình Nghiệm Nguyên

Nộp bài trên LQDOJ

Bài 47 · Extended Euclidean Algorithm

Với mỗi phương trình

hãy mô tả các nghiệm nguyên và, khi có thể, các nghiệm nguyên dương. Trong bài này, một nghiệm dương phải thỏa đồng thời và .

Nếu phương trình có nghiệm nguyên nhưng không có nghiệm dương, vẫn cần tìm riêng:

  • giá trị dương nhỏ nhất mà có thể nhận trong một nghiệm nguyên;
  • giá trị dương nhỏ nhất mà có thể nhận trong một nghiệm nguyên.

Hai giá trị này có thể đến từ hai nghiệm khác nhau.

Input

  • Dòng đầu chứa số nguyên .
  • Mỗi trong dòng tiếp theo chứa ba số nguyên .

Output

  • Với mỗi phương trình, in đúng một dòng theo một trong ba dạng:
  • Nếu phương trình không có nghiệm nguyên, in .
  • Nếu có nghiệm nguyên nhưng không có nghiệm dương, in như định nghĩa ở trên.
  • Nếu có nghiệm dương, in , trong đó là số nghiệm dương; bốn giá trị còn lại lần lượt là giá trị nhỏ nhất và lớn nhất của từng tọa độ trong tập nghiệm dương.

Constraints

  • .
  • .

Scoring

  • Subtask ( số điểm): các test từ đến , dùng miền dữ liệu nhỏ để có thể đối chiếu độc lập.
  • Subtask ( số điểm): không có giới hạn bổ sung ngoài các ràng buộc đã nêu.

Example

Test 1

Input

4
2 3 12
4 6 5
4 6 20
3 5 18

Output

1 3 2 3 2
-1
1 2 2 2 2
1 1 3 1 3

Giải thích: Phương trình có đúng một nghiệm dương là , nên cả cực tiểu lẫn cực đại của hai tọa độ đều bằng tọa độ của cặp này. Phương trình vô nghiệm nguyên vì không chia .

Lời giải tóm tắt
  • Ý tưởng: Gọi g=gcd(a,b). Nếu g không chia c, in -1. Ngược lại, Euclid mở rộng cho một nghiệm (x0,y0) và họ nghiệm
  • Ý tưởng: x=x0+(b/g)·t, y=y0-(a/g)·t.
  • Ý tưởng: Điều kiện x≥1,y≥1 tạo đoạn nguyên [lo,hi]. Nếu đoạn không rỗng, số nghiệm là hi-lo+1; các giá trị nhỏ nhất/lớn nhất của x,y nằm tại hai đầu đoạn.
  • Ý tưởng: Nếu đoạn rỗng, x và y vẫn chạy trên các lớp đồng dư riêng. Chuẩn hóa x0 modulo b/g và y0 modulo a/g để lấy giá trị dương nhỏ nhất của từng tọa độ; hai giá trị không bắt buộc thuộc cùng một nghiệm.
  • Ý tưởng: Mỗi test chạy trong O(log min(a,b)).