Ổn định mảng (phiên bản GCD)
Nộp bài giải
Điểm:
6,00 (OI)
Giới hạn thời gian:
4.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho mảng số nguyên dương (với ).
Trong một bước, mảng được thay bằng mảng mới cùng độ dài , trong đó mỗi phần tử là ước chung lớn nhất (GCD) của hai phần tử kề nhau theo nghĩa vòng tròn:
Tức là phần tử kề phải của chính là . Sau khi tính xong , ta gán .
Ví dụ, nếu thì .
Với mảng cho trước, hãy tìm số bước nhỏ nhất để tất cả phần tử của trở nên bằng nhau (tức ). Nếu ngay từ đầu mảng đã có tất cả phần tử bằng nhau thì đáp án là .
Dữ liệu vào
- Dòng đầu chứa số nguyên () — số bộ test.
- Mỗi bộ test gồm hai dòng:
- Dòng đầu chứa ().
- Dòng thứ hai chứa số nguyên ().
Tổng giá trị trên tất cả các bộ test không vượt quá .
Dữ liệu ra
In ra số — mỗi dòng là đáp án cho một bộ test theo thứ tự đề bài.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 4 16 24 10 5 4 42 42 42 42 3 4 6 4 5 1 2 3 4 5 6 9 9 27 9 9 63 |
3 0 2 1 1 |
Bộ 1: — cần 3 bước. Bộ 2: đã bằng nhau, 0 bước. |
| 1 5 2 2 2 2 2 |
0 | Toàn bộ phần tử đã bằng nhau từ đầu nên cần 0 bước. |
Bình luận