Pagini recente » Cod sursa (job #1472766) | Cod sursa (job #134554) | Cod sursa (job #1738593) | Cod sursa (job #473566) | Cod sursa (job #461134)
Cod sursa(job #461134)
#include <algorithm>
#include <vector>
using namespace std;
#define INF (1<<31)-1
#define pb push_back
#define mp make_pair
#define sc second
#define fs first
vector <pair <int,int> > d;
int n,b,rez;
void solve ()
{
int i,x,nr;
d.clear ();
for (i=2; i*i<=b; ++i)
if (b%i==0)
{
for (nr=0; b%i==0; b/=i)
++nr;
d.pb (mp (i,nr));
}
if (b>1)
d.pb (mp (b,1));
rez=INF;
for (i=0; i<(int)d.size (); ++i)
{
nr=0;
for (x=d[i].fs; n/x; x*=d[i].fs)
nr+=(n/x-1)*(n/x)/2*x+(n/x)*(n-(n/x)*x+1);
rez=min (rez,nr/d[i].sc);
}
printf ("%d\n",rez);
}
int main ()
{
freopen ("zero2.in","r",stdin);
freopen ("zero2.out","w",stdout);
int i;
for (i=1; i<=10; ++i)
{
scanf ("%d%d",&n,&b);
solve ();
}
return 0;
}