canuc80k4708·9/21

Điểm nguyên trên đường thẳng

Nộp bài trên LQDOJ

Bài 47 · Extended Euclidean Algorithm

Tìm một điểm nguyên trên đường thẳng , hoặc báo không tồn tại. Bất kỳ cặp số nguyên nào thỏa phương trình đều được chấp nhận.

Input

  • Một dòng chứa .

Output

  • In hoặc một cặp hợp lệ.

Constraints

  • và không đồng thời bằng .

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

6 9 -3

Output

-1 1

Giải thích: Cặp cho nên là một điểm nguyên hợp lệ.

Lời giải tóm tắt
  • Ý tưởng: Phương trình đường thẳng tương đương A·x+B·y=-C. Đặt g=gcd(|A|,|B|). Nếu g không chia -C, không có điểm nguyên và ta in -1.
  • Ý tưởng: Nếu có, Euclid mở rộng tìm hệ số Bézout của |A|,|B|; hiệu chỉnh dấu theo A,B rồi nhân với (-C)/g để thu được một điểm nguyên. Checker chấp nhận bất kỳ điểm hợp lệ nào.
  • Ý tưởng: Độ phức tạp O(log max(|A|,|B|)).