Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include<set>
  2. #include<map>
  3. #include<list>
  4. #include<iomanip>
  5. #include<cmath>
  6. #include<string>
  7. #include<vector>
  8. #include<queue>
  9. #include<stack>
  10. #include<complex>
  11. #include<sstream>
  12. #include<iostream>
  13. #include<fstream>
  14. #include<algorithm>
  15. #include<numeric>
  16. #include<utility>
  17. #include<functional>
  18. #include<stdio.h>
  19. #include<assert.h>
  20. #include<memory.h>
  21. #include<bitset>
  22. #include<math.h>
  23.  
  24. #define f first
  25. #define s second
  26. #define mp make_pair
  27. #define pb push_back
  28. #define lp(i,a,n) for(int i=(a);i<=(ll)(n);i++)
  29. #define lpd(i,a,n) for(int i=(a);i>=(ll)(n);i--)
  30. #define clr(a) memset(a,0,sizeof a)
  31. #define all(v) v.begin(),v.end()
  32. #define println(a) cout <<(a) <<endl
  33. #define sz(x) ((int)(x).size())
  34. #define mod 1000000007
  35. #define eps 1e-6
  36. #define infi 1e9
  37. #define infll 1e16
  38. using namespace std;
  39. typedef long long ll;
  40. typedef pair<int, int> pii;
  41. typedef pair<ll, ll> pll;
  42. typedef vector<int> vi;
  43. typedef vector<vi> vvi;
  44. typedef vector<ll> vll;
  45. typedef set<int> si;
  46. typedef map<int, int> mii;
  47.  
  48. const ll N = 100005 , UpperBound = 100000000000005ll;
  49.  
  50. ll n,k,arr[N];
  51. int main(int argc, const char * argv[]) {
  52.  
  53. scanf("%lld%lld" , &n,&k);
  54.  
  55. lp(i, 1, n) scanf("%lld" , &arr[i]) , arr[i] += arr[i-1];
  56.  
  57.  
  58. if(1 == k) {
  59. printf("%lld\n" , n*(n+1ll)/2);
  60. return 0;
  61. }
  62.  
  63. ll ans = 0 , b = k;
  64. k = 1;
  65. while (abs(k) < UpperBound) {
  66. if(!b) k = 0;
  67. map<ll,ll> prev;
  68. ++prev[0];
  69. lp(i, 1, n) {
  70. if(prev.count(arr[i]-k)) ans += prev[arr[i]-k];
  71. ++prev[arr[i]];
  72. }
  73. if(k == 0) break;
  74. k*=b;
  75. }
  76.  
  77. printf("%lld\n",ans);
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement