Pagini recente » Cod sursa (job #2575033) | Cod sursa (job #683923) | Cod sursa (job #344406) | Clasamentul arhivei de probleme | Cod sursa (job #1823225)
#include <stdio.h>
int v[3]={2,3,5},api[3],apj[3],apij[3];
int main(){
FILE *fin=fopen("pascal.in","r");
FILE *fout=fopen("pascal.out","w");
int r,d,nr,i,j,c;
fscanf(fin,"%d%d",&r,&d);
nr=0;
for(i=0; i<3; i++){
c=v[i];
while(c<=r){
api[i]+=r/c;
c*=v[i];
}
apij[i]=api[i];
}
for(i=1; i<r/2+r%2; i++){
for(j=0; j<3; j++){
c=r-i+1;
while(c%v[j]==0){
apij[j]--;
c/=v[j];
}
c=i;
while(c%v[j]==0){
apj[j]++;
c/=v[j];
}
}
switch(d){
case 2: if(api[0]-apij[0]-apj[0]>0) nr++; break;
case 3: if(api[1]-apij[1]-apj[1]>0) nr++; break;
case 5: if(api[2]-apij[2]-apj[2]>0) nr++; break;
case 4: if(api[0]-apij[0]-apj[0]>1) nr++; break;
case 6: if(api[0]-apij[0]-apj[0]>0 && api[1]-apij[1]-apj[1]>0) nr++; break;
}
}
nr*=2;
if(r%2==0){
for(j=0; j<3; j++){
c=r-i+1;
while(c%v[j]==0){
apij[j]--;
c/=v[j];
}
c=i;
while(c%v[j]==0){
apj[j]++;
c/=v[j];
}
}
switch(d){
case 2: if(api[0]-apij[0]-apj[0]>0) nr++; break;
case 3: if(api[1]-apij[1]-apj[1]>0) nr++; break;
case 5: if(api[2]-apij[2]-apj[2]>0) nr++; break;
case 4: if(api[0]-apij[0]-apj[0]>1) nr++; break;
case 6: if(api[0]-apij[0]-apj[0]>0 && api[1]-apij[1]-apj[1]>0) nr++; break;
}
}
fprintf(fout,"%d\n",nr);
fclose(fin);
fclose(fout);
return 0;
}