#5344. Orac and Divisors (Mã bài ORACDIV)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một mảng a gồm n số nguyên. Bạn cần xây dựng một dãy số b bằng cách thực hiện các bước sau:

  1. Chọn một chỉ số i_1 và đặt b_1 = a_{i_1} .
  2. Chọn một chỉ số i_2 > i_1 sao cho i_1 là ước của i_2 , và đặt b_2 = a_{i_2} .
  3. Chọn một chỉ số i_3 > i_2 sao cho i_2 là ước của i_3 , và đặt b_3 = a_{i_3} .
  4. ...
  5. Chọn một chỉ số i_k > i_{k-1} sao cho i_{k-1} là ước của i_k , và đặt b_k = a_{i_k} .

Yêu cầu: Hãy tìm độ dài lớn nhất có thể của dãy b .

Dữ liệu:

  • Dòng đầu tiên chứa số lượng bộ test t .
  • Mỗi bộ test bắt đầu bằng một số nguyên n .
  • Dòng tiếp theo chứa n số nguyên a_1, a_2, \dots, a_n .

Kết quả: Với mỗi bộ test, in ra độ dài lớn nhất của dãy b .

Ví dụ:

Dữ liệu:

1
10
1 1 1 1 1 1 1 1 1 1

Kết quả:

4

Giải thích: Một dãy b có thể là: b_1 = a_1, b_2 = a_2, b_3 = a_4, b_4 = a_8 . Các chỉ số là 1 \to 2 \to 4 \to 8 .

Giới hạn:

  • 1 \le t \le 100
  • 1 \le n \le 10^5
  • 1 \le a_i \le 10^9
  • Tổng của n trên tất cả các test không vượt quá 10^5 .