Cod sursa(job #58586)

Utilizator FlorianFlorian Marcu Florian Data 6 mai 2007 14:50:31
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
int main()
{long long unsigned k,x,p,i,j,ii,ij,jj,d,sol=0;
FILE*f=fopen("pascal.in","r");
FILE*g=fopen("pascal.out","w");
fscanf(f,"%llu %llu",&i,&d);

//i!/(i-j)!*j!
if(d==3||d==5)
	{
	p=d;
	ii=0;
	while(i/p!=0) {ii+=i/p; p*=d;}
	for(j=1;j<i;j++)
		{
		jj=0; p=d;
		while (j/p!=0){jj+=(j/p); p*=d;}
		 ij=0; p=d;
		 while((i-j)/p!=0) {ij+=(i-j)/p; p*=d;}
		if ((ii-ij-jj>0)) sol++;
		}}
else if (d==4||d==2)
	{
	 ii=0;
	 x=i;
	 for(x=2;i<=x;i+=2)
	 while((x&1)==0)
		{
		ii++;
		x=(x>>1);}
	 for(j=1;j<i;j++)
	 {
	 jj=0;
	 for(x=2;x<=j;x+=2)
	 while((x&1)==0)
		{
		jj++;
		x=(x>>1);
		}
	 ij=0;
	 for(x=2;x<=(i-j);x+=2)
	 while((x&1)==0)
		{ij++;
		x=(x>>1);}
	 if (d==4){ if (ii-jj-ij>1) sol++;}
	  else if (ii-ij-jj>0) sol++;    }
	 }

fprintf(g,"%llu",sol);
return 0;}