#include using namespace std; using ll = long long; using P = pair >; map prime_factor(ll n) { map res; for (ll i = 2; i * i <= n; i++) { while (n % i == 0) { ++res[i]; n /= i; } } if (n != 1) res[n] = 1; return res; } int main() { cin.tie(0); ios::sync_with_stdio(false); ll n, K, m; cin >> n >> K >> m; map p = prime_factor(n); vector v, lim; for (auto& pp : p) { pp.second *= K; v.push_back(pp.first); lim.push_back(pp.second); } priority_queue, greater

> pq; pq.emplace(1, vector(v.size(), 0)); set s; while (!pq.empty()) { P tar = pq.top(); pq.pop(); if (tar.first > m) break; if (s.find(tar.first) != s.end()) continue; s.insert(tar.first); for (int i = 0; i < v.size(); i++) { if (tar.second[i] >= lim[i]) continue; ll val = tar.first * v[i]; if (val > m) continue; vector cnt(tar.second); cnt[i]++; pq.emplace(val, cnt); } } cout << s.size() << "\n"; return 0; }