Pagini recente » Cod sursa (job #333600) | Cod sursa (job #940178) | Cod sursa (job #1293977) | Cod sursa (job #1438514) | Cod sursa (job #148965)
Cod sursa(job #148965)
#include<stdio.h>
long int v[4],t2[4],t1[4],c,c1,c2,xj2,b,xj,r,a,aux,d,n,i,xi,nr;
int main(){
FILE *f=fopen("pascal.in","r");
fscanf(f,"%ld %ld",&n,&d);
fclose(f);
if(d==4){
d=2;
xi=0;
for(i=d;i<=n;i*=i){
xi+=(n/i);
}
b=xi;
xj=xi;
xj2=0;
for(i=1;i<=n-1;i++){
a=n-i+1;
b=0;
while(a%d==0){
b++;
a/=d;
}
aux=i;
xj-=b;
b=0;
while(aux%d==0){
b++;
aux/=d;
}
xj2+=b;
c=xi-(xj+xj2);
if(c/2>=1)nr++;
}
}
else{
if(d==6){
for(i=2;i<=n;i*=d){
v[2]+=(n/i);
}
for(i=3;i<=n;i*=d){
v[3]+=(n/i);
}
t1[2]=v[2];
t1[3]=v[3];
for(i=1;i<=n-1;i++){
a=n-i+1;
while(a%2==0){
t1[2]--;
a/=2;
}
a=n-i+1;
while(a%3==0){
t1[3]--;
a/=3;
}
a=i;
while(a%2==0){
t2[2]++;
a/=2;
}
a=i;
while(a%3==0){
t2[3]++;
a/=3;
}
if((v[2]-(t1[2]+t2[2]))>0 && ( (v[3]-(t1[3]+t2[3]))>0 ) ){
nr++;
}
}
}
else{
i=d;
xi=0;
for(i=d;i<=n;i*=i){
xi+=(n/i);
}
b=xi;
xj=xi;
xj2=0;
for(i=1;i<=n-1;i++){
a=n-i+1;
b=0;
while(a%d==0){
b++;
a/=d;
}
aux=i;
xj-=b;
b=0;
while(aux%d==0){
b++;
aux/=d;
}
xj2+=b;
if(xi>xj+xj2)nr++;
}
}
}
FILE *g=fopen("pascal.out","w");
fprintf(g,"%ld",nr);
fclose(g);
return 0;
}