Cod sursa(job #127656)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 24 ianuarie 2008 19:53:19
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>

long r, d, c, contor, v[5000000];

void citire()
{
  freopen("pascal.in","r",stdin);
  freopen("pascal.out","w",stdout);
  scanf ("%ld %ld",&r,&d);
}

void descomp1(int d)
{
	int i, j, nr;
	for (i = 1; i <= r; i++)
	{
		nr = 0;
		j = d;
		while (i / j) {nr += i/j; j *= d;}
		nr++;
		v[i] = v[i - 1] + nr;
	}
}

void descomp2(int d)
{
	int i, j, nr;
	for (i = 1; i <= r; i++)
	{
		nr = 0;
		j = d;
		while (i / j) {nr += i/j; j *= d;}
		nr++;
		v[i] = v[i - 1] + nr;
		v[i] /= 2;
	}
}

void descomp3()
{
	int i, j, nr, d = 3;
	for (i = 1; i <= r; i++)
	{
		nr = 0;
		j = d;
		while (i / j) {nr += i/j; j *= d;}
		nr++;
		v[i] = v[i - 1] + nr;
	}
}

int main()
{
	citire();
	long i;
	r++;
	if (d == 4) descomp2(2);
	else if (d == 6) descomp3();
	else descomp1(d);

	for (i = 2; i <= r / 2; i++)
	if (v[r] - v[r-i] - v[i] >= 1) contor++;
        contor *= 2;
	
	if (r%2){ i = r/2+1;  if (v[r] - v[r-i] - v[i] >= 1) contor++;}
	printf("%ld\n",contor);
  return 0;
}