fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
  4. #define Bit(mask , i) ((mask >> i) & 1)
  5. #define fi first
  6. #define se second
  7. #define _LOG2(nl) 31 - __builtin_clz(nl)
  8. #define c_bit(nl) __builtin_popcount(nl)
  9. #define ii pair<int , pair<int , int>>
  10. #define db double
  11. #define onBit(mask , i) (mask | (1 << i))
  12. #define offBit(mask , i) (mask & (~(1 << i)))
  13.  
  14. const long long MOD = 1e9 + 7;
  15. const long long INF = 1e14;
  16. const int N = 1e3 + 7;
  17. map<long long , int> mp;
  18. long long pre[N][N];
  19. long long k;
  20. string s;
  21. int n;
  22.  
  23. void inp(){
  24. cin >> k;
  25. cin >> s;
  26. n = s.size();
  27. s = "L" + s;
  28. for (int i = 1 ; i <= n ; ++i){
  29. for (int j = 1 ; j <= n ; ++j){
  30. long long tmp = (s[i] - '0') * (s[j] - '0');
  31. pre[i][j] = tmp + pre[i - 1][j] + pre[i][j - 1] - pre[i - 1][j - 1];
  32. }
  33. }
  34. }
  35.  
  36. void solve(){
  37. int res = 0;
  38. for (int i = 1 ; i <= n ; ++i){
  39. for (int j = 1 ; j <= n ; ++j){
  40. ++mp[pre[i - 1][j - 1] - pre[i][j - 1] - pre[i - 1][j]];
  41. res += mp[k - pre[i][j]];
  42. }
  43. }
  44. cout << res;
  45. }
  46.  
  47. int main(){
  48. // freopen("xhmax.inp" , "r" , stdin);
  49. // freopen("xhmax.out" , "w" , stdout);
  50. faster;
  51. inp();
  52. solve();
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Standard output is empty