Cod sursa(job #347542)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 12 septembrie 2009 17:44:57
Problema Pascal Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#include <math.h>
#define Nmax 100005
#define Mmax 1000000001
#define Dmax 12

int edc[Dmax],edm[Dmax],dm[Dmax],zdm;
int n,m;
int sol;

void baga(int x,int s){
	int i;
   for(i=1;i<=zdm;++i)
     while(x % dm[i] == 0){
     		x /= dm[i];
         edc[i] += s;
     }
}

int bun(){
	int i;
   for(i=1;i<=zdm;++i) if( edm[i] > edc[i] ) return 0;
   return 1;
}

int main(){
	int k;
	freopen("pascal.in","r",stdin);
   freopen("pascal.out","w",stdout);
   scanf("%d%d",&n,&m);
   edm[1]=1;
   if( m == 2) dm[1]=2, zdm=1; else
   if( m == 3) dm[1]=3, zdm=1; else
   if( m == 4) dm[1]=2, zdm=1, edm[1]=2; else
   if( m == 5) dm[1]=5, zdm=1; else
   if( m == 6) dm[1]=2, dm[2]=3, edm[2]=1, zdm=2;

   //n--;
   for(k=1;k<=n;++k){
   	baga(n-k+1,1);
      baga(k,-1);
      if( bun() ) sol++;
   }

   printf("%d\n",sol);
	fclose(stdin); fclose(stdout);
   return 0;
}