Pagini recente » Cod sursa (job #2314759) | Cod sursa (job #406734) | Cod sursa (job #2336663) | Cod sursa (job #3253080) | Cod sursa (job #2254092)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll divs[7000];
int pd[4200][4200], p, n, test;
unordered_map<ll, int> m;
int main()
{
ifstream fin ("desc.in");
ofstream fout ("desc.out");
fin >> n >> test;
for (int i = 2; i*i <= n; ++i) //maybe treat divs[I] = n separately, also case where n is prime
if(n%i == 0){
divs[++p] = i;
if(i*i != n)
divs[++p] = n/i;
}
sort(divs+1, divs+p+1);
divs[++p] = n;
for (int i = 1; i <= p; ++i)
m[divs[i]] = i;
for (int i = 1; i <= p; ++i){
pd[i][i] = 1;
for (int j = i-1; j >= 1; --j){
pd[i][j] = pd[i][j+1];
if(divs[i]%divs[j] == 0 && m.find(divs[i]/divs[j]) != m.end())
pd[i][j] += pd[m[divs[i]/divs[j]]][j];
}
}
fout << pd[p][1] << "\n";
ll left = n, M = 2;
return 0;
}