Pagini recente » Cod sursa (job #3262867) | Cod sursa (job #282199) | Cod sursa (job #2310602) | Cod sursa (job #2822126) | Cod sursa (job #1597160)
#include <bits/stdc++.h>
using namespace std;
int d[2][5009];
long long n , divs[5009];
map < long long , int > w;
int k , L , i , j , c;
int main()
{
freopen("desc.in" , "r" , stdin);
freopen("desc.out" , "w" , stdout);
scanf("%lld" , &n);
scanf("%d" , &k);
for (i = 2 ; 1LL * i * i <= n ; ++i)
if (n % i == 0)
{
L++;
divs[L] = i;
w[i] = L;
}
for (i = 2 ; 1LL * i * i < n ; ++i)
if (n % i == 0) ++L;
for (i = 2 ; 1LL * i * i < n ; ++i)
if (n % i == 0)
{
w[n / i] = L;
divs[L] = n / i;
L--;
}
for (i = 2 ; 1LL * i * i < n ; ++i)
if (n % i == 0) ++L;
L++;
divs[L] = n;
w[n] = L;
for (j = L ; j ; --j)
{
c = j % 2;
memset(d[c] , 0 , sizeof(d[c]));
d[c][j] = 1;
for (i = j + 1 ; i <= L ; ++i)
{
d[c][i] = d[1-c][i];
if (divs[i] % divs[j] == 0)
d[c][i] += d[c][w[divs[i] / divs[j]]];
}
}
printf("%d\n" , d[c][L]);
return 0;
}