Cod sursa(job #1209083)

Utilizator IulianBoboUAIC Boboc Iulian IulianBobo Data 16 iulie 2014 23:56:39
Problema Zero 2 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>
using namespace std;
long long n, b;
long long Nrp(long long n,long long p)
{
	long long k = n / (long long)p-1;
	return (k*(k + 1) / 2 * p + (k + 1)*(n - (k + 1)*p + 1));
}
int main()
{
	FILE *f, *g;
	f=fopen("zero2.in","r");
	g=fopen("zero2.out","w");
	long long min,d,factori[1000], putere[1000], p;
	int i,j,nrf;
	for (i = 1; i <= 10; ++i)
	{
		fscanf(f, "%Ld%Ld\n", &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];
			}
			d /= putere[j];
			if (d < min) min = d;
		}
		fprintf(g, "%Ld\n", min);
	}
	fclose(f);
	fclose(g);
	return 0;
}