Pagini recente » Cod sursa (job #1918866) | Cod sursa (job #368470) | Cod sursa (job #1195006) | Cod sursa (job #1791554) | Cod sursa (job #1522245)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define maxN 1000002
#define maxD 1002
using namespace std;
int n, m, k, d[maxN], dp[maxD][maxD];
int cmp(int a, int b)
{
return a > b;
}
void read()
{
int i, j;
freopen("desc.in", "r", stdin);
scanf("%lld %d", &n, &m);
for (i = 1; (long long)(i * i * 1LL) <= n; ++ i)
if (n % i == 0)
{
if (i != 1)
d[++ d[0]] = i;
if (n / i != i)
d[++ d[0]] = n / i;
}
sort(d + 1, d + d[0] + 1);
}
void solve()
{
int i, j;
for (i = 1; i <= (m = d[0]); ++ i)
{
int pos = 1;
for (j = i; j >= 1; -- j)
{
if (d[i] % d[j])
dp[i][j] = dp[i][j + 1];
else
{
while (d[i] / d[j] > d[pos] && pos < d[0])
++ pos;
dp[i][j] = dp[pos][j] + dp[i][j + 1];
}
if (j == i)
++ dp[i][j];
}
}
}
void write()
{
freopen("desc.out", "w", stdout);
printf("%d\n", dp[m][1]);
}
int main()
{
read();
solve();
write();
return 0;
}