Pagini recente » Cod sursa (job #1641779) | Cod sursa (job #22065) | Cod sursa (job #117171) | Cod sursa (job #2243828) | Cod sursa (job #81303)
Cod sursa(job #81303)
#include <stdio.h>
long r, p1, p2 ,p, s1, s2, z;
int c;
long faktor(long r, int d)
{
long x=0, y=0;
while (y=r=r/d) x+=y;
return x;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%ld %d", &r, &c);
long i,o;
o=0;
if (c==2 || c==3 || c==5)
{
p=faktor(r,c);
z=(r+1)/2-1;
for (i=1; i<=z; ++i)
{
p1=faktor(r-i,c);
p2=faktor(i,c);
if (p1+p2 < p) ++o;
}
o=2*o;
if ( !(r & 1) )
{
p1=faktor(r-i,c);
p2=faktor(i,c);
if (p1+p2 < p) ++o;
}
}
else if (c==4)
{
z=(r+1)/2-1;
p=faktor(r,2)/2;
for (i=1; i<=z; ++i)
{
p1=faktor(r-i,2);
p2=faktor(i,2);
p1=(p1+p2)/2;
if (p1 < p) ++o;
}
o=2*o;
if ( !(r & 1) )
{
p1=faktor(r-i,2);
p2=faktor(i,2);
p1=(p1+p2)/2;
if (p1 < p) ++o;
}
}
else if (c==6)
{
s1=faktor(r,2);
s2=faktor(r,3);
z=(r+1)/2-1;
p=s1 < s2 ? s1 : s2;
for (i=1; i<=z; ++i)
{
s1=faktor(r-i,2);
s2=faktor(r-i,3);
p1=s1 < s2 ? s1 : s2;
s1=faktor(i,2);
s2=faktor(i,3);
p2=s1 < s2 ? s1 : s2;
if (p1+p2 < p) ++o;
}
o=2*o;
if ( !(r & 1) )
{
s1=faktor(r-i,2);
s2=faktor(r-i,3);
p1=s1 < s2 ? s1 : s2;
s1=faktor(i,2);
s2=faktor(i,3);
p2=s1 < s2 ? s1 : s2;
if (p1+p2 < p) ++o;
}
}
printf("%ld", o);
fclose(stdin);
fclose(stdout);
return 0;
}