Pagini recente » Cod sursa (job #3294998) | Cod sursa (job #2602028) | Cod sursa (job #1788550) | Cod sursa (job #2659253) | Cod sursa (job #647641)
Cod sursa(job #647641)
#include<cstdio>
#define N 5000001
int n,l,i,t,v[N],j,x[N],y[N],r,k;
int main()
{freopen("pascal.in","r",stdin);
freopen("pascal.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{j=i;
if(k!=4&&k!=6)
{t=0;
while(j%k==0)
t++,j/=k;
v[i]=v[i-1]+t;}
if(k==4)
{while(j%2==0)
x[i-1]++,j>>=1;
x[i]=x[i-1];}
if(k==6)
{r=j;
while(j%2==0)
x[i-1]++,j>>=1;
while(r%3==0)
y[i-1]++,r/=3;
x[i]=x[i-1],y[i]=y[i-1];}}
if(k!=4&&k!=6)
for(i=1;i<n;i++)
if(v[n]>v[i]+v[n-i])
l++;
if(k==6)
for(i=0;i<n-1;i++)
if(x[n-1]>x[i]+x[n-2-i]&&y[n-1]>y[i]+y[n-2-i])
l++;
if(k==4)
for(i=0;i<n-1;i++)
if(x[n-1]-x[i]-x[n-2-i]>1)
l++;
printf("%d",l);
return 0;}