Cod sursa(job #176422)

Utilizator Andreid91Ciocan Andrei Andreid91 Data 11 aprilie 2008 11:26:25
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream.h>
#include<math.h>

long calcexp(int d, long n)
	{
	long nr=0;int p=0;
	while (pow(d,++p)<=n)
		nr+=n/(long)pow(d,p);
	return nr;
	}

int calc(int d, long a)
	{
	int nr=0;
	while (d<=a && a%d==0)
		{
		a/=d;
		nr++;
		}
	return nr;
	}

int main()
{
long r,k,i,nr=0,k1,p,p1;
int d;
ifstream f("pascal.in");
f>>r>>d;
f.close();
if (d==2 || d==3|| d==5) k=calcexp(d,r);
	else if (d==4) k=calcexp(2,r);
		else {
		     k=calcexp(2,r);
		     k1=calcexp(3,r);
		     }
p=k;p1=k1;
for (i=1;i<r;i++)
	if (d==2|| d==3|| d==5) { p=p-calc(d,r-i+1)+calc(d,i);
				  if (k-p>0) nr++;}
			else if (d==4) {
				       p=p-calc(2,r-i+1)+calc(2,i);
				       if (k-p>1) nr++;
				       }
				else   {
				       p=p-calc(2,r-i+1)+calc(2,i);
				       p1=p1-calc(3,r-i+1)+calc(3,r);
				       if ((k-p) && (k1-p1)) nr++;
				       }
ofstream g("pascal.out");
g<<nr;g.close();
return 0;
}