#include <bits/stdc++.h>
using namespace std;
int p[11] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31};
string yes[3] = {"YES", "Yes", "yes"};
string no[3] = {"NO", "No", "no"};
int countones(long long a) {
  int count = 0;
  while (a != 0) {
    count++;
    a = a & (a - 1);
  }
  return count;
}
unsigned int reverse_bits(register unsigned int x) {
  x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
  x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
  x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
  x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
  return ((x >> 16) | (x << 16));
}
long long Fib[] = {
    0,         1,         1,         2,          3,         5,
    8,         13,        21,        34,         55,        89,
    144,       233,       377,       610,        987,       1597,
    2584,      4181,      6765,      10946,      17711,     28657,
    46368,     75025,     121393,    196418,     317811,    514229,
    832040,    1346269,   2178309,   3524578,    5702887,   9227465,
    14930352,  24157817,  39088169,  63245986,   102334155, 165580141,
    267914296, 433494437, 701408733, 1134903170, 1836311903};
long long sum(long long n) { return (n * (n + 1)) / 2; }
long long rangesum(long long a, long long b) {
  if (a <= 1) return sum(b);
  return sum(b) - sum(a - 1);
}
bool isPowerOfTwo(int n) {
  if (n == 0) return false;
  return (ceil(log2(n)) == floor(log2(n)));
}
inline bool cmp(long long a, long long b) { return a > b; }
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
bool palindrome(string a) {
  bool flag = 1;
  int x = a.size();
  for (int i = 0; i < x / 2; i++)
    if (a[i] != a[x - i - 1]) {
      flag = 0;
      break;
    }
  return flag;
}
int get_dimensions(int x, int y) {
  int a;
  if (x > 0 && y > 0)
    a = 1;
  else if (x < 0 && y > 0)
    a = 2;
  else if (x < 0 && y < 0)
    a = 3;
  else if (x > 0 && y < 0)
    a = 4;
  else
    a = 0;
  return a;
}
long long fastpower(long long x, long long power) {
  if (!power) return 1;
  if (power == 1) return x;
  if (power % 2) return (x * fastpower(x, power - 1));
  long long result = fastpower(x, power / 2);
  return result;
}
long long lim = (long long)1e16;
int n;
long long k, s, wyn;
map<long long, int> mapa;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> k;
  mapa[0]++;
  for (int i = 1; i <= n; i++) {
    long long x;
    cin >> x;
    s += x;
    mapa[s]++;
    long long t = 1;
    while (t <= lim) {
      wyn += mapa[s - t];
      t *= k;
      if (t == 1) break;
    }
  }
  cout << wyn << endl;
  return 0;
}
