Cod sursa(job #237943)

Utilizator razyelxrazyelx razyelx Data 30 decembrie 2008 22:59:49
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
FILE*in = fopen("pascal.in","r");
FILE*out= fopen("pascal.out","w");
long long cmmdc(long long a, long long b){

    long long r;

    while(b!=0){
         r=a%b;  
	 a=b;
	 b=r;
    }
    return a;
}
int main(){
    int  factj=1,x,c=0,n;

    long long rez,numitor;
    long long numarator[7],k,l,i,j;

    fscanf(in,"%lld%d",&i,&x);

    if((i+1)%2 == 0) n = (i+1)/2;
    else             n = (i+1)/2+1;


    for(j=1;j<n;j++){

// formez fractia

// numitor

       if(j!=0) factj *= j;

       numitor = x * factj;

// numarator

       for(k=1;k<=j;k++)
	  numarator[k] = i-j+k;

// operatiile de simplificare

       for(l=1;l<=k;l++){

	  rez = cmmdc(numarator[l],numitor);

	  if(rez == numitor){ c++; break;}
	  else

	    if(rez == numarator[l]){
	      numarator[l] = 1;
	      numitor     /= rez;
	    }else{

	       numitor /= rez;
	       numarator[l] /= rez;

	    }

       }

    }


    if((i+1)%2 == 0) c = c * 2;
    else             c = c * 2 -1;


    fprintf(out,"%lld",c);

    return 0;
}