#include #include #include #include #include using namespace std; using lint=int64_t; template void pfact(map &m,T n) { T x=n; for(T i=2;i*i<=n;i++) { while(x%i==0) { m[i]++; x/=i; } } if(x!=1)m[x]++; return; } lint N,K,M; map pfN; vector> facts; lint depth; lint ans=0; void dfs(lint d,lint cur) { if(d==depth) { ans++; return; } for(lint i=0;i<=facts[d].second*K;i++) { lint nxt=cur*pow(facts[d].first,i); if(nxt>M)break; dfs(d+1,nxt); } return; } int main() { cin >> N >> K >> M; pfact(pfN,N); for(auto& i:pfN) facts.push_back(make_pair(i.first,i.second)); depth=facts.size(); dfs(0,1); cout << ans << endl; return 0; }