Tìm hai số có hiệu hai bình phương

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python, Rust

Bài 1. Tìm hai số có hiệu hai bình phương

Cho một dãy số gồm ~n~ số nguyên dương ~a_1, a_2, ..., a_n~.

Với mỗi số ~a_i~, hãy tìm hai số nguyên dương ~x_i, y_i~ sao cho ~0 < x_i < a_i~, ~0 < y_i < a_i~ và ~x_i^2 - y_i^2 = a_i~. Nếu có nhiều cặp thỏa mãn, chọn cặp có ~x_i~ nhỏ nhất.

Dữ liệu vào

Dữ liệu được đọc từ tệp văn bản BAI1.INP theo cấu trúc:

  • Dòng 1 chứa số nguyên dương ~n~.
  • Dòng 2 chứa ~n~ số nguyên dương ~a_1, a_2, ..., a_n~. Các số trên cùng một dòng được ghi cách nhau bởi dấu cách.
Dữ liệu ra

Kết quả được ghi vào tệp văn bản BAI1.OUT, gồm ~n~ dòng. Dòng thứ ~i~ là đáp án tương ứng với ~a_i~:

  • Nếu tồn tại cặp số thỏa mãn, ghi hai số nguyên theo thứ tự ~x_i, y_i~; nếu có nhiều cặp thì ghi cặp có ~x_i~ nhỏ nhất.
  • Nếu không tồn tại, ghi -1.
Ví dụ
BAI1.INP BAI1.OUT
3
15 4 9
4 1
-1
5 4

Giới hạn

  • ~n ≤ 100~.
  • Với mọi ~1 ≤ i ≤ n~, ~1 ≤ a_i ≤ 10^6~.
  • Subtask 1: ~a_i ≤ 10^3~.
  • Subtask 2: ~a_i ≤ 10^6~.

Đang tải...