fork download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define PI 3.14159265359
  4. #define setting(x, y) memset(x, y, sizeof x)
  5. #define aint(x) x.begin(), x.end()
  6. #define read(x) freopen("x", "r", stdin);
  7. #define write(x) freopen("x", "w", stdout);
  8.  
  9. using namespace std;
  10.  
  11. int gcd(int a,int b) { while(b) { int x = a; a = b; b = x % b; } return a; }
  12. int lcm(int a,int b) { return a / gcd(a, b) * b; }
  13. int nC2(int n) { return (n)*(n-1)/2; }
  14. int summing(int n) { return (n)*(n+1)/2; }
  15. bool get_bit(int n, int idx) { int a = 1<<idx; return (n&a); }
  16. int set_bit1(int n, int idx) { int a = 1<<idx; return (n|a); }
  17. int set_bit0(int n, int idx) { int a = ~(1<<idx); return (n&a); }
  18.  
  19. int mod = 1e9 + 7;
  20. const int N = 3e5 + 5;
  21.  
  22. void solve() {
  23.  
  24. int a; cin >> a;
  25. string s; cin >> s;
  26.  
  27. vector<int> v;
  28.  
  29. for (auto i : s) v.push_back(i - '0');
  30.  
  31. map<int, int> mp;
  32.  
  33. for (int i=0; i<s.size(); i++) {
  34. int sum=0;
  35.  
  36. for (int j=i; j<s.size(); j++) {
  37. sum += v[j];
  38. mp[sum]++;
  39. }
  40. }
  41.  
  42. int ans = 0;
  43. if (a == 0) {
  44.  
  45. int n=0;
  46. vector<int> zero;
  47.  
  48. for (int i=0; i<s.size(); i++) {
  49. if (v[i] == 0) n++;
  50. else {
  51. zero.push_back(n);
  52. ans += 2 * summing(n) * summing(s.size());
  53. n = 0;
  54. }
  55. }
  56. if (n)
  57. ans += 2 * summing(n) * summing(s.size()), zero.push_back(n);
  58.  
  59. for (int i : zero) {
  60. for (int j : zero) ans -= summing(i) * summing(j);
  61. }
  62.  
  63. cout << ans;
  64. return;
  65.  
  66. }
  67.  
  68. for (auto [i, j] : mp) {
  69.  
  70. if (i && a%i == 0 && mp.count(a/i)) {
  71. ans += j * mp[a/i];
  72. }
  73.  
  74. }
  75.  
  76. cout << ans;
  77.  
  78. }
  79.  
  80. int32_t main()
  81. {
  82. ios::sync_with_stdio(false);
  83. cin.tie(nullptr), cout.tie(nullptr);
  84.  
  85. int t=1; // cin >> t;
  86. for (int ii=1; ii<=t; ii++) {
  87. // cout << "Case " << ii << ": ";
  88. solve();
  89. }
  90.  
  91. return 0;
  92. }
  93.  
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
Standard output is empty