Cod sursa(job #32423)

Utilizator kyrkDragos Dumitrescu kyrk Data 17 martie 2007 20:34:57
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include<iostream.h>
#include<fstream.h>
main()
{
long long s,s2,s3,d,k,p,delta,ij,x,i,j,n,m,valid;

fstream f("pascal.in",ios::in);
fstream g("pascal.out",ios::out);
f>>i;
f>>d;
valid=0;
if(i%2==0)k=i;
else {k=i+1;valid=1;}
if((d==2)||(d==3)||(d==5))
{
j=0;
delta=0;
do{
   ij=i-j;
   s=0;p=d;
   do{
      s+=i/p;
      p*=d;
      }while(p<=i);
   s2=0;p=d;
   do{
      s2+=ij/p;
      p*=d;
      }while(p<=ij);
   p=d;s3=0;
   do{
      s3+=j/p;
      p*=d;
      }while(p<=j);
   s2+=s3;
   s-=s2;
   if(s>=1){ delta+=2; if((j==k)&&(valid=1))delta--; }
   j++;
   }while(j<=k);

}


if(d==4)
{
j=0;
delta=0;
do{
   ij=i-j;
   s=0;p=d;
   do{
      s+=i/p;
      p*=d;
      }while(p<=i);
   s2=0;p=d;
   do{
      s2+=ij/p;
      p*=d;
      }while(p<=ij);
   p=d;s3=0;
   do{
      s3+=j/p;
      p*=d;
      }while(p<=j);
   s2+=s3;
   s-=s2;
   if(s>=2){delta+=2; if((j==k)&&(valid=1))delta--; }
   j++;
   }while(j<=k);
}

if(d==6)
{
j=0;
delta=0;
do{
   ij=i-j;
   s=0;p=2;
   do{
      s+=i/p;
      p*=2;
      }while(p<=i);
   s2=0;p=2;
   do{
      s2+=ij/p;
      p*=2;
      }while(p<=ij);
   p=2;s3=0;
   do{
      s3+=j/p;
      p*=2;
      }while(p<=j);
   s2+=s3;
   s-=s2;
   x=s;

   s=0;p=3;
   do{
      s+=i/p;
      p*=3;
      }while(p<=i);
   s2=0;p=3;
   do{
      s2+=ij/p;
      p*=3;
      }while(p<=ij);
   p=3;s3=0;
   do{
      s3+=j/p;
      p*=3;
      }while(p<=j);
   s2+=s3;
   s-=s2;

   if((s>=1)&&(x>=1)){delta++; if((j==k)&&(valid=1))delta--; }
   j++;
   }while(j<=i);
}


g<<delta;




 return 0;
 }