Cod sursa(job #271738)

Utilizator nautilusCohal Alexandru nautilus Data 5 martie 2009 21:53:31
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<fstream.h>

long n,nr,v[7];
int d;

void calculare(long k)
{
 long i,aux;

 v[2]=0; v[3]=0; v[5]=0;

 for (i=n-k+1; i<=n; i++)
	{
	 aux=i;
	 //2
	 while (aux%2==0 && aux!=0)
		{
		 v[2]++;
		 aux=aux/2;
		}
	 //3
	 while (aux%3==0 && aux!=0)
		{
		 v[3]++;
		 aux=aux/3;
		}
	 //5
	 while (aux%5==0 && aux!=0)
		{
		 v[5]++;
		 aux=aux/5;
		}
	}

 for (i=2; i<=k; i++)
	{
	 aux=i;
	 //2
	 while (aux%2==0 && aux!=0)
		{
		 v[2]--;
		 aux=aux/2;
		}
	 //3
	 while (aux%3==0 && aux!=0)
		{
		 v[3]--;
		 aux=aux/3;
		}
	 //5
	 while (aux%5==0 && aux!=0)
		{
		 v[5]--;
		 aux=aux/5;
		}
	}

 if (d==2 && v[2]>=1)
	nr++;
 if (d==3 && v[3]>=2)
	nr++;
 if (d==4 && v[2]>=2)
	nr++;
 if (d==5 && v[5]>=1)
	nr++;
 if (d==6 && v[2]>=1 && v[3]>=1)
	nr++;
}

int main()
{
 long i;

 ifstream fin("pascal.in");
 fin>>n>>d;
 n++;

 for (i=2; i<=n/2; i++)
	calculare(i);

 nr=nr*2;

 if (n%2==1)
	calculare(n/2+1);

 ofstream fout("pascal.out");
 fout<<nr;

 fin.close();
 fout.close();

 return 0;
}