Dãy cấp số nhân (Vòng Sơ loại 2022: Bài 1 của bảng B, Bài 1 của bảng C2)

Xem PDF

Điểm: 300 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho dãy gồm \(n\) số nguyên \(a_1, a_2, ..., a_n\). Dãy số \(b_1, b_2, ..., b_k\) được gọi là dãy cấp số nhân công bội \(q\) khi và chỉ khi \(b_{i + 1} = b_i * q\) với mọi \(1 \leq i < k\).

Yêu cầu

Cho số nguyên \(q\), với mỗi \(k(1 < k \leq n)\), hãy đếm số dãy con (không nhất thiết liên tiếp) độ dài
\(k\) của dãy \(a_1, a_2, ..., a_n\) là dãy cấp số nhân công bội \(q\).

Input

  • Dòng đầu tiên gồm hai số nguyên \(n, q(1 \leq n \leq 10^5, 2 \leq q \leq 10^9)\).
  • Dòng thứ hai chưa \(n\) số nguyên \(a_1, a_2, ..., a_n(1 \leq a_i \leq 10^9)\).

Output

  • Ghi ra thiết bị ra chuẩn một dòng gồm \(n - 1\) số nguyên, số thứ \(s(1 \leq s < n)\) là số dãy con độ dài \((s + 1)\) là dãy cấp số nhân công bội \(q\) chia dư cho \((10^9 + 7)\).

Scoring

  • \(25\)% số điểm của bài toán thỏa mãn \(n \leq 20\).
  • \(25\)% số điểm của bài toán thỏa mãn \(n \leq 100\).
  • \(25\)% số điểm của bài toán thỏa mãn \(n \leq 1000\).
  • \(25\)% số điểm của bài toán không có ràng buộc gì thêm.

Example

Test 1

Input
5 2
1 2 8 4 2
Output
3 1 0 0

Bình luận

Không có bình luận nào.