Pagini recente » Cod sursa (job #2033098) | campion | Cod sursa (job #1977348) | Cod sursa (job #1798288) | Cod sursa (job #1756617)
#include<bits/stdc++.h>
using namespace std;
int n,d,p,p2,p21,p22,p23,mid,q21,q22,q23;
int pw(int x,int y)
{
int p=0;
while (!(x%y))
{
p++;
x/=y;
}
return p;
}
int main()
{
freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d",&n);
scanf("%d",&d);
if (d==2 || d==3 || d==5)
{
p=d;
p2=0;
while (p<=n)
{
p2=p2+(n/p);
p*=d;
}
p21=p2;
p22=p2;
p23=0;
mid=(n/2);
int nr=0;
for(int j=1;j<=mid;j++)
{
p22-=pw(n-j+1,d);
p23+=pw(j,d);
if ((p21-p22-p23)>0) nr+=2;
}
if (!(n%2)) nr--;
printf("%d\n",nr);
}
else
if (d==4)
{
p=2;
p2=0;
while (p<=n)
{
p2=p2+(n/p);
p*=2;
}
p21=p2;
p22=p2;
p23=0;
mid=(n/2);
int nr=0;
for(int j=1;j<=mid;j++)
{
p22-=pw(n-j+1,2);
p23+=pw(j,2);
if ((p21-p22-p23)>1) nr+=2;
}
if (!(n%2)) nr--;
printf("%d\n",nr);
}
else
if (d==6)
{
p=2;
p2=0;
while (p<=n)
{
p2=p2+(n/p);
p*=2;
}
p21=p2;
p22=p2;
p23=0;
//
p=3;
p2=0;
while (p<=n)
{
p2=p2+(n/p);
p*=3;
}
q21=p2;
q22=p2;
q23=0;
//
mid=(n/2);
int nr=0;
for(int j=1;j<=mid;j++)
{
p22-=pw(n-j+1,2);
p23+=pw(j,2);
q22-=pw(n-j+1,3);
q23+=pw(j,3);
if ((p21-p22-p23)>0 && (q21-q22-q23)>0) nr+=2;
}
if (!(n%2)) nr--;
printf("%d\n",nr);
}
return 0;
}