Cod sursa(job #448146)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 2 mai 2010 21:28:18
Problema Pascal Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>
#define N 5000001
int scor[N];
int scor2[N];
int main ()
{int n,d,i,j,ct;
 freopen("pascal.in","r",stdin);
 freopen("pascal.out","w",stdout);
 scanf("%d %d",&n,&d);
 if(d==2||d==3||d==5)
 {for (i=1;i<=n;i++)
  {for (j=d;j<=i;j*=d)
   {scor[i]+=i/j;
   }
  }
 }
 else if(d==4)
 {for (i=1;i<=n;i++)
  {for (j=2;j<=i;j*=2)
   {scor[i]+=i/j;
   }
  }
 }
 else if(d==6)
 {for (i=1;i<=n;i++)
  {for (j=2;j<=i;j*=2)
   {scor[i]+=i/j;
   }
   for (j=3;j<=i;j*=3)
   {scor2[i]+=i/j;
   }
  }
 }
 if(d==2||d==3||d==5)
 {for (ct=0,i=1;i<=(n-1)/2;i++)
  {if((scor[n]-scor[i]-scor[n-i])>0)
   {ct++;
   }
  }
  ct*=2;
  if(n%2==0)
  {if((scor[n]-scor[n/2]-scor[n/2])>0)
   {ct++;
   }
  }
 }
 else if(d==4)
 {for (ct=0,i=1;i<=(n-1)/2;i++)
  {if((scor[n]-scor[i]-scor[n-i])>1)
   {ct++;
   }
  }
  ct*=2;
  if(n%2==0)
  {if((scor[n]-scor[n/2]-scor[n/2])>1)
   {ct++;
   }
  }
 }
 else//6
 {for (ct=0,i=1;i<=(n-1)/2;i++)
  {if((scor[n]-scor[i]-scor[n-i])>0&&(scor2[n]-scor2[i]-scor2[n-i])>0)
   {ct++;
   }
  }
  ct*=2;
  if(n%2==0)
  {if((scor[n]-2*scor[n/2])>0&&(scor2[n]-2*scor2[n/2])>0)
   {ct++;
   }
  }
 }
 printf("%d",ct);
 return 0;
}