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. npk1605 (5/10)
  2. tuythoi213 (4/6)
  3. cong_lam (3/3)
Trong 7 ngày
  1. nguyenanhvu (40/63)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

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