#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const long long INF = 1e14;
long long sum[N];
set<long long> s;
set<long long>::iterator ss;
map<long long, int> m;
int main() {
  int n, k;
  scanf("%d%lld", &n, &k);
  for (int i = 1; i <= n; i++) {
    long long x;
    scanf("%lld", &x);
    sum[i] = sum[i - 1] + x;
  }
  if (k == 1) {
    s.insert(1);
  } else if (k == -1) {
    s.insert(1);
    s.insert(-1);
  } else {
    s.insert(1);
    long long t = k;
    for (int i = 1; i <= 60; i++) {
      if (t > INF) break;
      s.insert(t);
      t = t * k;
    }
  }
  long long ans = 0;
  m.clear();
  m[0] = 1;
  for (int i = 1; i <= n; i++) {
    for (ss = s.begin(); ss != s.end(); ss++) {
      ans += m[sum[i] - *ss];
    }
    m[sum[i]]++;
  }
  printf("%lld\n", ans);
  return 0;
}
