CẤP SỐ NHÂN

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

Ouput

5 2
1 2 8 4 2
3 1 0 0

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. qtaydzs1tg (17/23)
  2. ducanhbc (16/23)
  3. duythai (12/18)
Trong 7 ngày
  1. haiyen2011 (69/149)
  2. khanhchi_29 (66/80)
  3. qtaydzs1tg (57/90)
Trong 30 ngày
  1. nongvantien11 (115/189)
  2. trungo0 (112/199)
  3. ngocbichh (110/267)
Thống kê
AC/Sub: 120817/226949
Pascal: 18142
C++: 157988
Python: 50747
Lượt xem/tải tests: 41021

Lưu Hải Phong - 2020
[email protected]