Pagini recente » Cod sursa (job #2897885) | Cod sursa (job #1048266) | Cod sursa (job #555382) | Cod sursa (job #997486) | Cod sursa (job #485487)
Cod sursa(job #485487)
#include <stdio.h>
#define FIN "zero2.in"
#define FOUT "zero2.out"
#define ll long long
#define min(a, b) ((a) < (b) ? (a) : (b))
ll N, B;
ll solve(ll N, ll p)
{
ll t, k, ret = 0;
for (t = p; t <= N; t *= p)
{
k = N/t;
ret += (ll)t*k*(k-1)/2 + (ll)(N-k*t+1)*k;
}
return ret;
}
int main(void)
{
ll t, p, e, ret;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
for (t = 0; t < 10; t++)
{
scanf("%lld %lld", &N, &B);
ret = 1LL << 61;
for (p = 2; p*p <= B; p++)
{
if (B%p) continue;
for (e = 0; !(B%p); B /= p) e++;
ret = min(ret, solve(N, p)/e);
}
if (B > 1) ret = min(ret, solve(N, B));
printf("%lld\n", ret);
}
return 0;
}