Pagini recente » Cod sursa (job #106369) | Cod sursa (job #1634289) | Cod sursa (job #88373) | Cod sursa (job #1634386) | Cod sursa (job #1969809)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("pascal.in","r");
FILE *g=fopen("pascal.out","w");
int F[4];
int E[4];
int r[4];
int D;
int R;
void desc(int D)
{
if(D==2){F[0]=E[1]=1;F[1]=2;}
else if(D==3){F[0]=E[1]=1;F[1]=3;}
else if(D==4){F[0]=1;E[1]=2;F[1]=2;}
else if(D==5){F[0]=1;E[1]=1;F[1]=5;}
else if(D==6){F[0]=2;E[1]=1;E[2]=1;F[1]=2;F[2]=3;}
}
int mod(int val,int sgn)
{
for(int i=1;i<=F[0];i++)
{
int p1=F[i];
while(p1<=val)
{
r[i]+=sgn;
p1*=F[i];
}
}
}
bool eval()
{
int R=(1<<30);
for(int i=1;i<=F[0];i++)
R=min(R,r[i]/E[i]);
return R>0;
}
int main()
{
fscanf(f,"%d %d",&R,&D);
desc(D);
int rez=0;
for(int i=1;i<(R+1)/2+(R+1)%2;i++)
{
mod(R-i+1,1);
mod(i,-1);
if(eval())
rez+=(1+(2*i!=R));
}
fprintf(g,"%d",rez);
fclose(f);
fclose(g);
return 0;
}