Pagini recente » Cod sursa (job #2645333) | Cod sursa (job #518753) | Cod sursa (job #159190) | Cod sursa (job #759515) | Cod sursa (job #2628933)
#include <bits/stdc++.h>
std::ifstream fin ("desc.in");
std::ofstream fout ("desc.out");
std::vector <long long> d;
int main()
{
long long n, k, i, j, divisor;
fin >> n >> k;
for (i=1; i*i<=n; i++){
if (n % i == 0){
d.push_back (i);
if (n / i != i)
d.push_back (n/i);
}
}
std::sort (d.begin(), d.end());
/*
for (i=0; i<d.size(); i++)
fout << d[i] << ' ';
*/
int dp[d.size()+2][d.size()+2];
int last;
memset (dp, 0, sizeof dp);
for (i=0; i<d.size(); i++)
dp[0][i] = 1;
for (i=1; i<d.size(); i++){
last = 0;
for (j=d.size()-1; j>=0; j--){
divisor = d[i];
dp[i][j] = dp[i][j+1];
if (divisor % d[j] == 0){
divisor /= d[j];
while (d[last] < divisor)
last ++;
dp[i][j] += dp[last][j];
}
}
}
/*
for (i=0; i<d.size(); i++, fout << '\n'){
fout << d[i] << " - ";
for (j=0; j<d.size(); j++)
fout << dp[i][j] << ' ';
}
*/
fout << dp[d.size()-1][1] << ' ';
return 0;
}