Cod sursa(job #127662)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 24 ianuarie 2008 20:01:46
Problema Pascal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 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 = 1; i <= r ; i++)
	if (v[r] - v[r-i] - v[i] > 0) contor++;
       
	printf("%ld\n",contor);
  return 0;
}