Pagini recente » Cod sursa (job #2960382) | Cod sursa (job #2511706) | Cod sursa (job #2210094) | Cod sursa (job #1627046) | Cod sursa (job #237954)
Cod sursa(job #237954)
#include <stdio.h>
FILE*in = fopen("pascal.in","r");
FILE*out= fopen("pascal.out","w");
long long cmmdc(long long a, long long b){
unsigned long r;
while(b!=0){
r=a%b;
a=b;
b=r;
}
return a;
}
long long factj=1,c=0,n;
long long rez,numitor;
long long numarator[10000],k,l,i,j;
int main(){
fscanf(in,"%lld%lld",&i,&factj);
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 = 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,"%d",c);
return 0;
}