Mai intai trebuie sa te autentifici.
Cod sursa(job #1209076)
Utilizator | Data | 16 iulie 2014 23:43:29 | |
---|---|---|---|
Problema | Zero 2 | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.84 kb |
#include <fstream>
using namespace std;
long long n, b;
long long Nrp(long long n, long long p)
{
long long k = n / p-1;
return (k*(k + 1) / 2 * p + (k + 1)*(n - (k + 1)*p + 1));
}
int main()
{
ifstream f("zero2.in");
ofstream g("zero2.out");
long long factori[100],putere[100],nrf,p,d,min;
int i,j;
for (i = 1; i <= 10; ++i)
{
f >> n >> b;
d = 2; p = 0;
nrf = 0;
min = 1LL << 62;
while (b > 1)
{
while (b%d == 0)
{
b = b / d;
++p;
}
if (p > 0)
{
factori[++nrf] = d;
putere[nrf] = p;
p = 0;
}
++d;
}
for (j = 1; j <= nrf; ++j)
{
p = factori[j];
d = 0;
while (p <= n)
{
d = d + Nrp(n, p);
p = p*factori[j];
}
if (d / putere[j] < min) min = d / putere[j];
}
g << min << "\n";
}
f.close();
g.close();
return 0;
}