Cho dãy gồm 𝑛 số nguyên dương 𝑎1, 𝑎2, … , 𝑎𝑛. Dãy số 𝑏1, 𝑏2, … , 𝑏𝑘 được gọi là dãy cấp số nhân công bội 𝑞 khi và chỉ khi 𝑏𝑖+1 = 𝑏𝑖 × 𝑞 với mọi 1 ≤ 𝑖 < 𝑘.
Yêu cầu: Cho số nguyên 𝑞, với mỗi 𝑘 (1 < 𝑘 ≤ 𝑛), hãy đếm số dãy con (không nhất thiết liên tiếp) độ dài 𝑘 của dãy 𝑎1, 𝑎2, … , 𝑎𝑛 là dãy cấp số nhân công bội 𝑞.
Dữ liệu vào:
Dòng đầu tiên gồm hai số nguyên 𝑛, 𝑞 (1 ≤ 𝑛 ≤ 105, 2 ≤ 𝑞 ≤ 109);
Dòng thứ hai chứa 𝑛 số nguyên 𝑎1, 𝑎2, … , 𝑎𝑛(1 ≤ 𝑎𝑖 ≤ 109).
Kết quả: Ghi một dòng gồm 𝑛 − 1 số nguyên, số thứ 𝑠(1 ≤ 𝑠 < 𝑛) là số dãy con độ dài 𝑠 + 1 là dãy cấp số nhân công bội 𝑞 chia dư cho (𝟏𝟎𝟗 + 𝟕).
Ràng buộc:
Có 25% số test ứng với 25% số điểm của bài thỏa mãn: 𝑛 ≤ 20;
25% số test khác ứng với 25% số điểm của bài thỏa mãn: 𝑛 ≤ 100;
25% số test khác ứng với 25% số điểm của bài thỏa mãn: 𝑛 ≤ 1000;
25% số test còn lại ứng với 25% số điểm của bài không có ràng buộc gì thêm.
Ví dụ:
Input |
|
---|---|
5 2 1 2 8 4 2 | 3 1 0 0 |
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 |