Pagini recente » Cod sursa (job #490789) | Monitorul de evaluare | Cod sursa (job #3216364) | Cod sursa (job #886546) | Cod sursa (job #844684)
Cod sursa(job #844684)
#include <cassert>
#include <cstdio>
int n=0;
int doi(int k)
{
int i=0,m=k,x=0,nr=2;
while (m/2>0)
{
m/=2;
++i;
}
m=i;
for (i=0; i<m; ++i)
{
x=x+(k/nr);
nr=nr+nr;
}
return x;
}
int trei(int k)
{
int i=0,m=k,x=0,nr=3;
while (m/3>0)
{
m/=3;
++i;
}
m=i;
for (i=0; i<m; ++i)
{
x=x+(k/nr);
nr=nr+nr+nr;
}
return x;
}
int cinci(int k)
{
int i=0,m=k,x=0,nr=5;
while (m/5>0)
{
m/=5;
++i;
}
m=i;
for (i=0; i<m; ++i)
{
x=x+(k/nr);
nr=nr+nr+nr+nr+nr;
}
return x;
}
int main()
{
int d=0,d2=0,d3=0,d5=0,i=0,sol=0;
assert(freopen("pascal.in","r",stdin));
assert(freopen("pascal.out","w",stdout));
scanf("%d%d",&n,&d);
d2=doi(n);
d3=trei(n);
d5=cinci(n);
for (i=0; i<n; ++i)
if (d==2)
{
if (doi(i)+doi(n-i)<d2)
++sol;
}
else if (d==3)
{
if (trei(i)+trei(n-i)<d3)
++sol;
}
else if (d==4)
{
if (doi(i)+doi(n-i)+1<d2)
++sol;
}
else if (d==5)
{
if (cinci(i)+cinci(n-i)<d5)
++sol;
}
else if (d==6)
{
if (doi(i)+doi(n-i)<d2 && trei(i)+trei(n-i)<d3)
++sol;
}
assert(printf("%d\n",sol));
return 0;
}