Tham gia hoạt động trại hè Toán học, bạn Minh được giáo viên hướng dẫn về phép toán chia lấy dư. Cụ thể như sau: Nếu cho trước hai số nguyên dương \(x\) và \(y\) thì phép chia lấy dư của \(x\) đối với \(y\) (\(x\ mod\ y\)) là số dư của phép chia \(x\) cho \(y\). Ví dụ: 10 mod 3 = 1 vì 10 chia 3 có thương bằng 3 và số dư là 1. Với phép toán mới này, bạn Minh mong muốn được áp dụng vào những bài toán cụ thể. Bạn Phương thì đam mê những dãy số, hai bạn đã cùng nhau nghiên cứu bài toán thú vị liên quan đến phép chia lấy dư. Bài toán như sau:
Cho một dãy số gồm \(n\) số nguyên dương \(a_{1},\ a_{2},\ \ldots,\ a_{n}\). Tìm tất cả các số nguyên dương \(k\) sao cho các phần tử trong dãy số đã cho khi chia \(k\) đều có cùng số dư.
Yêu cầu: Hãy viết chương trình tìm tất cả các số nguyên dương \(k\) lớn hơn 1 sao cho mọi phần tử trong dãy số khi chia \(k\) luôn có cùng số dư.
Dữ liệu vào:
+ Dòng thứ nhất: Chứa số nguyên dương \(n\ (2 \leq n \leq 100)\) là số lượng phần tử của dãy số.
+ Dòng thứ hai: Chứa dãy số nguyên dương \(a_{i}\) \((1 \leq i \leq n,\ 2 \leq \ a_{i} \leq 10^{9})\) trên cùng một dòng, mỗi số cách nhau một khoảng trắng.
Kết quả: Xuất ra màn hình một dòng gồm các số \(k\) theo thứ tự tăng dần sao cho tất cả các phần tử \(a_{i}\) trong dãy khi chia cho \(k\) đều có cùng số dư. Các số cách nhau một khoảng trắng. Nếu không tìm được số \(k\) thỏa mãn thì xuất kết quả là \(- 1\).
Ví dụ:
Dữ liệu vào | Dữ liệu ra |
---|---|
3 47 77 35 | 2 3 6 |
4 5 2 14 7 | -1 |
Giải thích:
Khi \(n\ = \ 3\), các số 47, 77, 35 khi chia cho 2 cùng dư 1, khi chia cho 3 cùng dư 2, khi chia cho 6 cùng dư 5.
Khi \(n = 4\), với các số 5, 2, 14, 7 thì không tìm được số k thỏa mãn, xuất giá trị \(- 1\).
Code tích cực |
---|
Trong 24h |
|
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |