Pagini recente » Cod sursa (job #564037) | Cod sursa (job #2933183) | Cod sursa (job #2663376) | Cod sursa (job #2140350) | Cod sursa (job #476072)
Cod sursa(job #476072)
#include <cstdio>
#define INF "pascal.in"
#define OUF "pascal.out"
#define NMAX 5000002
using namespace std;
short a[NMAX],b[NMAX],c[NMAX];
int main()
{
FILE *in,*out;
in=fopen(INF,"r");
out=fopen(OUF,"w");
int n,d,i,j,aux,sol=0;
short aa,bb,cc;
fscanf(in,"%d%d",&n,&d);
a[0]=b[0]=c[0]=0;
for(i=1;i<=n;++i)
{
aux=i;
aa=bb=cc=0;
while(aux%2==0){ ++aa;aux/=2;}
while(aux%3==0){ ++bb;aux/=3;}
while(aux%5==0){ ++cc;aux/=5;}
a[i]=a[i-1]+aa;
b[i]=b[i-1]+bb;
c[i]=c[i-1]+cc;
}
sol=0;
for(i=1;i<=n;++i)
{
aa=a[n]-a[i]-a[n-i];
bb=b[n]-b[i]-b[n-i];
cc=c[n]-c[i]-c[n-i];
switch(d)
{
case 2: if(aa) ++sol;break;
case 3: if(bb) ++sol;break;
case 4: if(aa>1) ++sol;break;
case 5: if(cc) ++sol;break;
case 6: if(aa&&bb) ++sol;break;
}
}
fprintf(out,"%d",sol);
fclose(in);fclose(out);
return 0;
}