Cod sursa(job #518846)
#include <fstream>
using namespace std;
int v[3]={2,3,5};
int c[3]={2,3,5};
int a[3],b[3],d[3];
int e[3]={1,1,1};
void check(int mum)
{
if(mum==2)
{a[0]=2;++b[0];}
else
if(mum==3)
{a[1]=3;++b[1];}
else
if(mum==4)
{a[1]=2;b[0]+=2;}
else
if(mum==5)
{a[2]=5;++b[2];}
else
{a[0]=2;a[1]=3;++b[0];++b[1];}
}
void solve(int x,int y,int z)
{
int numar=0;
while(x>0)
{
numar+=x/y;
x/=y;
}
d[z]=numar;
}
void solve2(int x,int y,int z)
{
int numar=0;
while(x>0)
{
numar+=x/y;
x/=y;
}
if(numar!=0)
e[z]*=numar;
}
int main()
{
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r, q, i,j;
fin>>r >>q;
check(q);
int nr=0;
for(i=1;i<=r-1;++i)
{
for(j=0;j<=2;++j)
if(a[j]!=0)
solve(r,v[j],j);
for(j=0;j<=2;++j)
if(a[j]!=0)
solve2(r-i,v[j],j);
for(j=0;j<=2;++j)
if(a[j]!=0)
solve2(i,v[j],j);
int ok=0;
for(j=0;j<=2;++j)
if(a[j]!=0)
if(b[j]>d[j]/e[j])
{ok=1;break;}
for(j=0;j<=2;++j)
{
d[j]=0;
e[j]=1;
}
if(ok==0)
++nr;
}
fout<<nr;
return 0;
}