Pagini recente » Cod sursa (job #3205682) | Cod sursa (job #1156915) | Cod sursa (job #465185) | Cod sursa (job #165534) | Cod sursa (job #2641779)
#include <bits/stdc++.h>
using namespace std;
ifstream f("desc.in");
ofstream g("desc.out");
vector <pair <long long,long long> > v;
long long fact[21],n,m,i,d,numar,maxim,suma;
long long numarmoduri (long long nr)
{
int i;
long long exponent,valoare=1;
for (i=0;i<v.size();i++)
{
exponent=v[i].second;
valoare=(valoare*fact[exponent+nr-1])/(fact[exponent]*fact[nr-1]);
}
return valoare;
}
int main()
{
f>>n>>m;
fact[0]=1;
for (i=1;i<=20;i++)
{
fact[i]=fact[i-1]*i;
}
d=2;
while (d*d<=n&&n!=1)
{
numar=0;
while (n%d==0)
{
numar++;
n=n/d;
}
if (numar!=0)
{
v.push_back({d,numar});
}
d++;
}
if (n!=1)
{
v.push_back({d,1});
}
for (i=0;i<v.size();i++)
{
maxim=max(maxim,v[i].second);
}
for (i=2;i<=maxim;i++)
{
suma=suma+numarmoduri(i);
}
g<<suma;
return 0;
}