Cod sursa(job #22016)

Utilizator anamaria1Ozorchevici Ana Maria anamaria1 Data 25 februarie 2007 13:45:27
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.49 kb
#include<fstream.h>
unsigned long ras;
int main()
{ifstream f("pascal.in");
ofstream g("pascal.out");
unsigned long r,val,n1,n2,d,i,l,j,c1,c2,val2,n3;
f>>r>>d;f.close();
if((r==0)||(r==1)) {g<<0<<'\n';g.close();return 0;}
val=val2=0;
if(d==6)
 {for(i=2;i<=r;i=i*2) val=val+r/i;
  for(i=3;i<=r;i=i*3) val2=val2+r/i;
  l=r/2;
  for(i=0;i<l;i++)
   {n2=n3=0;n1=i;
    if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	    for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	   }
    n1=r-i;
    if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	    for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	   }
    if(((val-n2)>0)&&((val2-n3)>0)) ras++;
   }
  if(r%2)
   {n2=n3=0;n1=l;
    if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	    for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	   }
    n1=r-l;
    if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	    for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	   }
    if(((val-n2)>0)&&((val2-n3)>0)) ras++;
    ras=ras*2;g<<ras<<'\n';g.close();return 0;
   }
   else
    {ras=ras*2;
     n2=n3=0;n1=l;
     if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	     for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	    }
     n1=r-l;
     if(n1) {for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
	     for(j=3;j<=n1;j=j*3) n3=n3+n1/j;
	    }
    if(((val-n2)>0)&&((val2-n3)>0)) ras++;
     g<<ras<<'\n';g.close();return 0;
    }
 }
if(d==4)
 {for(i=2;i<=r;i=i*2) val=val+r/i;
  l=r/2;
  for(i=0;i<l;i++)
   {n2=0;n1=i;
    if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
    n1=r-i;
    if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
    if((val-n2)>=2) ras++;
   }
  if(r%2)
   {n2=0;n1=l;
    if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
    n1=r-l;
    if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
    if((val-n2)>=2) ras++;
    ras=ras*2;g<<ras<<'\n';g.close();return 0;
   }
   else
    {ras=ras*2;n1=l;n2=0;
     if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
     n1=r-l;
     if(n1) for(j=2;j<=n1;j=j*2) n2=n2+n1/j;
     if((val-n2)>=2) ras++;
     g<<ras<<'\n';g.close();return 0;
    }
 }
for(i=d;i<=r;i=i*d) val=val+r/i;
l=r/2;
for(i=0;i<l;i++)
 {n2=0;n1=i;
  if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
  n1=r-i;
  if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
  if((val-n2)>0) ras++;
 }
if(r%2)
 {n2=0;n1=l;
  if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
  n1=r-l;
  if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
  if((val-n2)>0) ras++;
  ras=ras*2;g<<ras<<'\n';g.close();return 0;
 }
 else
  {ras=ras*2;n1=l;n2=0;
   if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
   n1=r-l;
   if(n1) for(j=d;j<=n1;j=j*d) n2=n2+n1/j;
   if((val-n2)>0) ras++;
   g<<ras<<'\n';g.close();return 0;
  }
}