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. coderpro07 (8/12)
  2. hoangbo34567 (8/12)
  3. vohuyen6688 (8/8)
Trong 7 ngày
  1. nhakyy (21/47)
  2. phatkrt (18/39)
  3. bennek (15/16)
Trong 30 ngày
  1. qtaydzs1tg (194/309)
  2. thang8a1 (134/263)
  3. ifindmyself1 (117/244)
Thống kê
AC/Sub: 120817/226949
Pascal: 18142
C++: 157988
Python: 50747
Lượt xem/tải tests: 42171

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