#include <bits/stdc++.h>
#define int long long
#define PI 3.14159265359
#define setting(x, y) memset(x, y, sizeof x)
#define aint(x) x.begin(), x.end()
#define read(x) freopen("x", "r", stdin);
#define write(x) freopen("x", "w", stdout);
using namespace std;
int gcd(int a,int b) { while(b) { int x = a; a = b; b = x % b; } return a; }
int lcm(int a,int b) { return a / gcd(a, b) * b; }
int nC2(int n) { return (n)*(n-1)/2; }
int summing(int n) { return (n)*(n+1)/2; }
bool get_bit(int n, int idx) { int a = 1<<idx; return (n&a); }
int set_bit1(int n, int idx) { int a = 1<<idx; return (n|a); }
int set_bit0(int n, int idx) { int a = ~(1<<idx); return (n&a); }
int mod = 1e9 + 7;
const int N = 3e5 + 5;
void solve() {
int a; cin >> a;
string s; cin >> s;
vector<int> v;
for (auto i : s) v.push_back(i - '0');
map<int, int> mp;
for (int i=0; i<s.size(); i++) {
int sum=0;
for (int j=i; j<s.size(); j++) {
sum += v[j];
mp[sum]++;
}
}
int ans = 0;
if (a == 0) {
int n=0;
vector<int> zero;
for (int i=0; i<s.size(); i++) {
if (v[i] == 0) n++;
else {
zero.push_back(n);
ans += 2 * summing(n) * summing(s.size());
n = 0;
}
}
if (n)
ans += 2 * summing(n) * summing(s.size()), zero.push_back(n);
for (int i : zero) {
for (int j : zero) ans -= summing(i) * summing(j);
}
cout << ans;
return;
}
for (auto [i, j] : mp) {
if (i && a%i == 0 && mp.count(a/i)) {
ans += j * mp[a/i];
}
}
cout << ans;
}
int32_t main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int t=1; // cin >> t;
for (int ii=1; ii<=t; ii++) {
// cout << "Case " << ii << ": ";
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTkKI2RlZmluZSBzZXR0aW5nKHgsIHkpIG1lbXNldCh4LCB5LCBzaXplb2YgeCkKI2RlZmluZSBhaW50KHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHJlYWQoeCkgZnJlb3BlbigieCIsICJyIiwgc3RkaW4pOwojZGVmaW5lIHdyaXRlKHgpIGZyZW9wZW4oIngiLCAidyIsIHN0ZG91dCk7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGdjZChpbnQgYSxpbnQgYikgeyB3aGlsZShiKSB7IGludCB4ID0gYTsgYSA9IGI7IGIgPSB4ICUgYjsgfSByZXR1cm4gYTsgfQppbnQgbGNtKGludCBhLGludCBiKSB7IHJldHVybiBhIC8gZ2NkKGEsIGIpICogYjsgfQppbnQgbkMyKGludCBuKSB7IHJldHVybiAobikqKG4tMSkvMjsgfQppbnQgc3VtbWluZyhpbnQgbikgeyByZXR1cm4gKG4pKihuKzEpLzI7IH0KYm9vbCBnZXRfYml0KGludCBuLCBpbnQgaWR4KSAgeyBpbnQgYSA9IDE8PGlkeDsgcmV0dXJuIChuJmEpOyB9CmludCAgIHNldF9iaXQxKGludCBuLCBpbnQgaWR4KSB7IGludCBhID0gICAxPDxpZHg7ICAgIHJldHVybiAobnxhKTsgICB9CmludCAgIHNldF9iaXQwKGludCBuLCBpbnQgaWR4KSB7IGludCBhID0gfigxPDxpZHgpOyAgIHJldHVybiAobiZhKTsgICB9CgppbnQgbW9kID0gMWU5ICsgNzsKY29uc3QgaW50IE4gPSAzZTUgKyA1OwoKdm9pZCBzb2x2ZSgpIHsKCiAgICBpbnQgYTsgY2luID4+IGE7CiAgICBzdHJpbmcgczsgY2luID4+IHM7CgogICAgdmVjdG9yPGludD4gdjsKCiAgICBmb3IgKGF1dG8gaSA6IHMpIHYucHVzaF9iYWNrKGkgLSAnMCcpOwoKICAgIG1hcDxpbnQsIGludD4gbXA7CgogICAgZm9yIChpbnQgaT0wOyBpPHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICBpbnQgc3VtPTA7CgogICAgICAgIGZvciAoaW50IGo9aTsgajxzLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgIHN1bSArPSB2W2pdOwogICAgICAgICAgICBtcFtzdW1dKys7CiAgICAgICAgfQogICAgfQoKICAgIGludCBhbnMgPSAwOwogICAgaWYgKGEgPT0gMCkgewoKICAgICAgICBpbnQgbj0wOwogICAgICAgIHZlY3RvcjxpbnQ+IHplcm87CgogICAgICAgIGZvciAoaW50IGk9MDsgaTxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgIGlmICh2W2ldID09IDApIG4rKzsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB6ZXJvLnB1c2hfYmFjayhuKTsKICAgICAgICAgICAgICAgIGFucyArPSAyICogc3VtbWluZyhuKSAqIHN1bW1pbmcocy5zaXplKCkpOwogICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG4pCiAgICAgICAgICAgIGFucyArPSAyICogc3VtbWluZyhuKSAqIHN1bW1pbmcocy5zaXplKCkpLCB6ZXJvLnB1c2hfYmFjayhuKTsKCiAgICAgICAgZm9yIChpbnQgaSA6IHplcm8pIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA6IHplcm8pIGFucyAtPSBzdW1taW5nKGkpICogc3VtbWluZyhqKTsKICAgICAgICB9CgogICAgICAgIGNvdXQgPDwgYW5zOwogICAgICAgIHJldHVybjsKCiAgICB9CgogICAgZm9yIChhdXRvIFtpLCBqXSA6IG1wKSB7CgogICAgICAgIGlmIChpICYmIGElaSA9PSAwICYmIG1wLmNvdW50KGEvaSkpIHsKICAgICAgICAgICAgYW5zICs9IGogKiBtcFthL2ldOwogICAgICAgIH0KCiAgICB9CgogICAgY291dCA8PCBhbnM7Cgp9CgppbnQzMl90IG1haW4oKQp7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKCiAgICBpbnQgdD0xOyAvLyBjaW4gPj4gdDsKICAgIGZvciAoaW50IGlpPTE7IGlpPD10OyBpaSsrKSB7CiAgICAgICAgLy8gY291dCA8PCAiQ2FzZSAiIDw8IGlpIDw8ICI6ICI7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=