Pagini recente » Cod sursa (job #1996202) | Cod sursa (job #2724558) | Cod sursa (job #1885043) | Cod sursa (job #529921) | Cod sursa (job #1206102)
#include<stdio.h>
int fact[6];
char cateFact1[5000001],cateFact2[5000001];
int getfact(int nr,int p){
int P=p,rez=0;
while(nr/P>0){
rez+=nr/P;
P*=p;
}
return rez;
}
int main(){
FILE *fin,*fout;
fin=fopen("pascal.in","r");
fout=fopen("pascal.out","w");
int r,d;
fscanf(fin,"%d%d",&r,&d);
int cont=0,nr=2,j,i;
int sol=0,ok,x2=getfact(r,2),c,x3=getfact(r,3),x4=getfact(r,4),x5=getfact(r,5);
for(i=1;i<=r;i++)
{
cateFact1[i]=cateFact1[i-1];
cateFact2[i]=cateFact2[i-1];
c=i;
switch(d){
case 2:
while((c&1)==0){
cateFact1[i]++;
c=c>>1;
}
break;
case 3:
while(c%3==0){
cateFact1[i]++;
c=c/3;
}
break;
case 4:
while((c&1)==0){
cateFact1[i]++;
c=c>>1;
}
break;
case 5:
while(c%5==0){
cateFact1[i]++;
c=c/5;
}
break;
case 6:
while((c&1)==0){
cateFact1[i]++;
c=c>>1;
}
while(c%3==0){
cateFact2[i]++;
c=c>>1;
}
break;
}
}
for(i=0;i<=r/2;i++){
ok=1;
if(d==2&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
ok=0;
if(d==3&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
ok=0;
if(d==4&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<2)
ok=0;
if(d==5&&cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1)
ok=0;
if(d==6&&(cateFact1[r]-cateFact1[r-i]-cateFact1[i]<1||cateFact2[r]-cateFact2[r-i]-cateFact2[i]<1))
ok=0;
if(ok)
sol++;
}
if(ok&&r%2==0)
sol--;
else
ok=0;
fprintf(fout,"%d",sol*2+ok);
return 0;
}