Pagini recente » Cod sursa (job #2876871) | Cod sursa (job #518853)
Cod sursa(job #518853)
#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];
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)
{
if(e[z]!=0 && numar!=1)
e[z]*=numar;
else
e[z]+=numar;
}*/
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)
e[j]=d[j]=0;
if(ok==0)
++nr;
}
fout<<nr;
return 0;
}