Pagini recente » Cod sursa (job #1638924) | Cod sursa (job #1997732) | Stelele Informaticii 2009, clasele 9-10, ziua 2 | Istoria paginii runda/aaaaa/clasament | Cod sursa (job #483536)
Cod sursa(job #483536)
#include<fstream.h>
long e,k,n,d,nr,w,c;
long x[10];
long t[3]={2,3,5};
long p[7][35];
long cauta(long q,long u)
{long m=(q+u)/2;
if(q<=u)
if(w%p[c][m]==0)
return cauta(m+1,u);
else
return cauta(q,m-1);
else
return q-1;
}
int main()
{ifstream fin("pascal.in");
fin>>n>>d;
fin.close();
long i;
ofstream fout("pascal.out");
p[2][0]=p[3][0]=p[5][0]=1;
for(i=1;i<=30;++i)
p[2][i]=p[2][i-1]*2,p[3][i]=p[3][i-1]*3,p[5][i]=p[5][i-1]*5;
p[2][31]=30;p[3][31]=15;p[5][31]=12;
w=n;
for(k=0;k<=2;++k)
{c=t[k];
e=cauta(0,p[c][31]);
x[t[k]]+=e;
w/=p[c][e];
}
for(i=2;i<=n-1;++i)
{w=i;
for(k=0;k<=2&&w>1;++k)
{c=t[k];
e=cauta(0,p[c][31]);
x[t[k]]-=e;
w/=p[c][e];
}
w=n-i+1;
for(k=0;k<=2&&w>1;++k)
{c=t[k];
e=cauta(0,p[c][31]);
x[t[k]]+=e;
w/=p[c][e];
}
if(d==2||d==5||d==5)
if(x[d]>0)
++nr;
if(d==4)
if(x[2]>1)
++nr;
if(d==6)
if(x[2]>0&&x[3]>0)
++nr;
}
fout<<nr<<'\n';
fout.close();
return 0;
}