Cod sursa(job #164343)

Utilizator alzwdedVlad Mesco alzwded Data 23 martie 2008 23:06:55
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <stdio.h>

#define i r
#define FORMULA (long) ((long long)(_fact(i,j)/fact(j))))

FILE *f,*g;
long long r,d;
void citire();
void numara();

int main(){
    f=fopen("pascal.in","r");
    g=fopen("pascal.out","w");
    
    citire();
    numara();

    fclose(g);
    return 0;
}

long long fact(long i, long j){
    long long ret=i;
    
    if(j==0) return 1;
    
    for(int k=i+1;k<=j;++k){
	ret*=k;
    }
    
    return ret;
}

void citire(){
    fscanf(f,"%ld%ld",&r,&d);
}

long long combinari(long n, long p){
    if(p==0||p==n) return 1;
    else return fact(n-p+1,n)/fact(1,p);
}

void numara(){
    long nr=0,j;

    for(j=0;j<r/2;++j){
	long long x=combinari(i,j);
	printf("j %ld:x %ld\n",j,x);
	if(x%d==0) nr+=2;
    }        
    if((r & 1)==0){
	long long x=combinari(i,j);;
	printf("j %ld:x %ld\n",j,x);
	if(x%d==0) nr++;
    }else{
	long long x=combinari(i,j);
	printf("j %ld:x %ld\n",j,x);
	if(x%d==0) nr+=2;
    }
    
    fprintf(g,"%ld",nr);
}