Cho một dãy số nguyên \(A\) gồm \(n\) số nguyên không âm \(A = \{ a_{1},\ a_{2},\ \ldots,\ a_{n}\}\ (2 \leq n \leq 20)\). Với mỗi lần lặp, bạn thay đổi dãy này thành một dãy mới theo cách: phần tử thứ \(k\ (1 \leq k < n)\) trong dãy mới có giá trị bằng \(\left| a_{k} - a_{k + 1} \right|\) (giá trị tuyệt đối của \(a_{k} - a_{k + 1}\)), phần tử cuối cùng sẽ là \(\left| a_{n} - a_{1} \right|\) (giá trị tuyệt đối của \(a_{n} - a_{1}\)). Quá trình lặp sẽ dừng lại khi các phần tử của dãy bằng nhau.
Yêu cầu: Bạn hãy viết chương trình xác định số lần lặp của dãy số đã cho.
Ví dụ: Với \(n = 4\), dãy số\(\ A = \{\ 0,\ 2,\ 5,\ 11\}\) ta sẽ có các lần lặp là:
| Lần lặp | Dãy số |
|---|---|
| 1 | 2, 3, 6, 11 |
| 2 | 1, 3, 5, 9 |
| 3 | 2, 2, 4, 8 |
| 4 | 0, 2, 4, 6 |
| 5 | 2, 2, 2, 6 |
| 6 | 0, 0, 4, 4 |
| 7 | 0, 4, 0, 4 |
| 8 | 4, 4, 4, 4 |
Tổng cộng 8 lần lặp.
Dữ liệu:
Dòng 1: chứa số nguyên dương \(n\);
Dòng 2: chứa \(n\) số nguyên \(a_{1},\ a_{2},\ \ldots,\ a_{n}\) theo đúng thứ tự cách nhau ít nhất một dấu cách.
Kết quả: Xuất ra màn hình một số nguyên dương là số lần lặp tương ứng nếu dãy không bằng nhau được sau 1000 lần lặp thì ghi số -1.
Ví dụ:
| Input | Output |
|---|---|
| 4 0 2 5 11 |
8 |
| 5 0 2 5 11 3 |
-1 |
| Code tích cực |
|---|
| Trong 24h |
|
| Trong 7 ngày |
|
| Trong 30 ngày |
|
| Thống kê |
|---|
|
AC/Sub: 120817/226949 Pascal: 18142 C++: 157988 Python: 50747 Lượt xem/tải tests: 41021 |