#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
using namespace chrono;
using ull = unsigned long long;
void Code_By_Mohamed_Khaled() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
}
const ll mod = 1e9 + 7;
ll add(ll a, ll b) { return ((a % mod) + (b % mod)) % mod; }
ll mul(ll a, ll b) { return (__int128(a) * b) % mod; }
ll sub(ll a, ll b) { return ((a % mod) - (b % mod) + mod) % mod; }
ll power(ll a, ll b, ll m) {
ll res = 1;
a %= m;
while (b > 0) {
if (b & 1) res = (__int128)res * a % m;
a = (__int128)a * a % m;
b >>= 1;
}
return res;
}
bool is_prime(ll n) {
if (n < 2) return false;
for (ll p : {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37}) {
if (n == p) return true;
if (n % p == 0) return false;
}
ll r = 0, d = n - 1;
while ((d & 1) == 0) d >>= 1, r++;
for (ll a : {2, 3, 5, 7, 11}) {
if (a >= n) continue;
ll x = power(a, d, n);
if (x == 1 || x == n - 1) continue;
bool ok = false;
for (ll i = 0; i < r - 1; i++) {
x = (__int128)x * x % n;
if (x == n - 1) {
ok = true;
break;
}
}
if (!ok) return false;
}
return true;
}
ll pollards_rho(ll n) {
if (n % 2 == 0) return 2;
if (is_prime(n)) return n;
while (true) {
ll x = rand() % (n - 2) + 2;
ll y = x;
ll c = rand() % (n - 1) + 1;
ll d = 1;
while (d == 1) {
x = (__int128)x * x % n;
x = (x + c) % n;
y = (__int128)y * y % n;
y = (y + c) % n;
y = (__int128)y * y % n;
y = (y + c) % n;
d = __gcd(abs(x - y), n);
}
if (d != n) return d;
}
}
void pollard_fact(ll n, map<ll,ll>&mp) {
if (n == 1) return;
if (is_prime(n)) {
mp[n]++;
return;
}
ll f = pollards_rho(n);
pollard_fact(f, mp);
pollard_fact(n / f, mp);
}
ll cnt_pairs(ll k) {
map<ll,ll>mp;
pollard_fact(k,mp);
return 1LL<<mp.size();
}
vector<ll> get_divisors(ll n) {
vector<ll> div;
for (ll b = 1; b * b <= n; b++) {
if (n % b == 0) {
div.push_back(b);
if (b * b != n) div.push_back(n / b);
}
}
return div;
}
int main() {
auto start = high_resolution_clock::now();
Code_By_Mohamed_Khaled();
// srand(time(0));
ll t=1;
while(t--){
ll c,d,x;
cin>>c>>d>>x;
vector<ll>div=get_divisors(x);
ll ans=0;
for (auto it:div) {
ll g=it,k=x/g+d;
if (k%c) continue;
k/=c;
ans+=cnt_pairs(k);
}
cout<<ans<<"\n";
}
auto end = high_resolution_clock::now();
auto duration = duration_cast<microseconds>(end - start);
cout << "Time taken: " << duration.count() << " microseconds" << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgY2hyb25vOwp1c2luZyB1bGwgPSB1bnNpZ25lZCBsb25nIGxvbmc7CnZvaWQgQ29kZV9CeV9Nb2hhbWVkX0toYWxlZCgpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGNvdXQudGllKG51bGxwdHIpOwojaWZuZGVmIE9OTElORV9KVURHRQogICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwojZW5kaWYKfQpjb25zdCBsbCBtb2QgPSAxZTkgKyA3OwpsbCBhZGQobGwgYSwgbGwgYikgeyByZXR1cm4gKChhICUgbW9kKSArIChiICUgbW9kKSkgJSBtb2Q7IH0KbGwgbXVsKGxsIGEsIGxsIGIpIHsgcmV0dXJuIChfX2ludDEyOChhKSAqIGIpICUgbW9kOyB9CmxsIHN1YihsbCBhLCBsbCBiKSB7IHJldHVybiAoKGEgJSBtb2QpIC0gKGIgJSBtb2QpICsgbW9kKSAlIG1vZDsgfQpsbCBwb3dlcihsbCBhLCBsbCBiLCBsbCBtKSB7CiAgICBsbCByZXMgPSAxOwogICAgYSAlPSBtOwogICAgd2hpbGUgKGIgPiAwKSB7CiAgICAgICAgaWYgKGIgJiAxKSByZXMgPSAoX19pbnQxMjgpcmVzICogYSAlIG07CiAgICAgICAgYSA9IChfX2ludDEyOClhICogYSAlIG07CiAgICAgICAgYiA+Pj0gMTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KYm9vbCBpc19wcmltZShsbCBuKSB7CiAgICBpZiAobiA8IDIpIHJldHVybiBmYWxzZTsKICAgIGZvciAobGwgcCA6IHsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzd9KSB7CiAgICAgICAgaWYgKG4gPT0gcCkgcmV0dXJuIHRydWU7CiAgICAgICAgaWYgKG4gJSBwID09IDApIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGxsIHIgPSAwLCBkID0gbiAtIDE7CiAgICB3aGlsZSAoKGQgJiAxKSA9PSAwKSBkID4+PSAxLCByKys7CiAgICBmb3IgKGxsIGEgOiB7MiwgMywgNSwgNywgMTF9KSB7CiAgICAgICAgaWYgKGEgPj0gbikgY29udGludWU7CiAgICAgICAgbGwgeCA9IHBvd2VyKGEsIGQsIG4pOwogICAgICAgIGlmICh4ID09IDEgfHwgeCA9PSBuIC0gMSkgY29udGludWU7CiAgICAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgICAgIGZvciAobGwgaSA9IDA7IGkgPCByIC0gMTsgaSsrKSB7CiAgICAgICAgICAgIHggPSAoX19pbnQxMjgpeCAqIHggJSBuOwogICAgICAgICAgICBpZiAoeCA9PSBuIC0gMSkgewogICAgICAgICAgICAgICAgb2sgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFvaykgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRydWU7Cn0KbGwgcG9sbGFyZHNfcmhvKGxsIG4pIHsKICAgIGlmIChuICUgMiA9PSAwKSByZXR1cm4gMjsKICAgIGlmIChpc19wcmltZShuKSkgcmV0dXJuIG47CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGxsIHggPSByYW5kKCkgJSAobiAtIDIpICsgMjsKICAgICAgICBsbCB5ID0geDsKICAgICAgICBsbCBjID0gcmFuZCgpICUgKG4gLSAxKSArIDE7CiAgICAgICAgbGwgZCA9IDE7CiAgICAgICAgd2hpbGUgKGQgPT0gMSkgewogICAgICAgICAgICB4ID0gKF9faW50MTI4KXggKiB4ICUgbjsKICAgICAgICAgICAgeCA9ICh4ICsgYykgJSBuOwogICAgICAgICAgICB5ID0gKF9faW50MTI4KXkgKiB5ICUgbjsKICAgICAgICAgICAgeSA9ICh5ICsgYykgJSBuOwogICAgICAgICAgICB5ID0gKF9faW50MTI4KXkgKiB5ICUgbjsKICAgICAgICAgICAgeSA9ICh5ICsgYykgJSBuOwogICAgICAgICAgICBkID0gX19nY2QoYWJzKHggLSB5KSwgbik7CiAgICAgICAgfQogICAgICAgIGlmIChkICE9IG4pIHJldHVybiBkOwogICAgfQp9CnZvaWQgcG9sbGFyZF9mYWN0KGxsIG4sIG1hcDxsbCxsbD4mbXApIHsKICAgIGlmIChuID09IDEpIHJldHVybjsKICAgIGlmIChpc19wcmltZShuKSkgewogICAgICAgIG1wW25dKys7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbGwgZiA9IHBvbGxhcmRzX3JobyhuKTsKICAgIHBvbGxhcmRfZmFjdChmLCBtcCk7CiAgICBwb2xsYXJkX2ZhY3QobiAvIGYsIG1wKTsKfQpsbCBjbnRfcGFpcnMobGwgaykgewogICAgbWFwPGxsLGxsPm1wOwogICAgcG9sbGFyZF9mYWN0KGssbXApOwogICAgcmV0dXJuIDFMTDw8bXAuc2l6ZSgpOwp9CnZlY3RvcjxsbD4gZ2V0X2Rpdmlzb3JzKGxsIG4pIHsKICAgIHZlY3RvcjxsbD4gZGl2OwogICAgZm9yIChsbCBiID0gMTsgYiAqIGIgPD0gbjsgYisrKSB7CiAgICAgICAgaWYgKG4gJSBiID09IDApIHsKICAgICAgICAgICAgZGl2LnB1c2hfYmFjayhiKTsKICAgICAgICAgICAgaWYgKGIgKiBiICE9IG4pIGRpdi5wdXNoX2JhY2sobiAvIGIpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBkaXY7Cn0KaW50IG1haW4oKSB7CglhdXRvIHN0YXJ0ID0gaGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICAgIENvZGVfQnlfTW9oYW1lZF9LaGFsZWQoKTsKICAgIC8vIHNyYW5kKHRpbWUoMCkpOwogICAgbGwgdD0xOwogICAgd2hpbGUodC0tKXsKCSAgICBsbCBjLGQseDsKCSAgICBjaW4+PmM+PmQ+Png7CgkgICAgdmVjdG9yPGxsPmRpdj1nZXRfZGl2aXNvcnMoeCk7CgkgICAgbGwgYW5zPTA7CgkgICAgZm9yIChhdXRvIGl0OmRpdikgewoJICAgICAgICBsbCBnPWl0LGs9eC9nK2Q7CgkgICAgICAgIGlmIChrJWMpIGNvbnRpbnVlOwoJICAgICAgICBrLz1jOwoJICAgICAgICBhbnMrPWNudF9wYWlycyhrKTsKCSAgICB9CgkgICAgY291dDw8YW5zPDwiXG4iOwogICAgfQogICAgYXV0byBlbmQgPSBoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgYXV0byBkdXJhdGlvbiA9IGR1cmF0aW9uX2Nhc3Q8bWljcm9zZWNvbmRzPihlbmQgLSBzdGFydCk7CiAgICBjb3V0IDw8ICJUaW1lIHRha2VuOiAiIDw8IGR1cmF0aW9uLmNvdW50KCkgPDwgIiBtaWNyb3NlY29uZHMiIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=