Pagini recente » Cod sursa (job #1364649) | Cod sursa (job #1998579) | Cod sursa (job #1267673) | Cod sursa (job #1912625) | Cod sursa (job #1672184)
#include <stdio.h>
using namespace std;
FILE*f=fopen("pascal.in","r");
FILE*g=fopen("pascal.out","w");
int ptr(long long d,long long l)
{
long long p=d;
long long nr=0;
while (p<=l)
{
nr+=l/p;
p*=d;
}
return nr;
}
int main()
{
long long r,p,d,d1,ok=0,nr,nr1,i,x,s=0;
fscanf(f,"%lld%lld",&r,&d);
if (d%2==0&&d!=2) {d1=d/2;d=2;ok=1;}
nr=ptr(d,r);
if (ok)
{
nr1=ptr(d1,r);
}
long long fin=(r+1)/2;
for (i=1;i<=fin;i++)
{
x=ptr(d,r-i+1)+ptr(d,i-1);
if (nr-x>0) {s++;
if (ok) if (nr1-ptr(d1,r-i+1)-ptr(d1,i-1)<=0||(d==d1&&nr1/2-(ptr(d1,r-i+1)-ptr(d1,i-1))/2<=0)) s--;}
}
s*=2;
if ((r+1)%2)
{
i=(r+1)/2+(r+1)%2;
x=ptr(d,r-i+1)+ptr(d,i-1);
if (nr-x>0) s++;
if (ok) if (nr1-ptr(d1,r-i+1)-ptr(d1,i-1)<=0||(d==d1&&nr1/2-ptr(d1,r-i+1)-ptr(d1,i-1)<=0)) s--;
}
fprintf(g,"%lld",s);
fclose(g);
fclose(f);
return 0;
}