Pagini recente » Cod sursa (job #1187812) | Cod sursa (job #1657077) | Cod sursa (job #2933416) | Cod sursa (job #1211948) | Cod sursa (job #1484652)
#include<stdio.h>
int n,l,i,t,v[5000001],j,x[5000001],y[5000001],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++)
if(k!=4&&k!=6) {
for(j=i,t=0;j%k==0;t++,j/=k);
v[i]=v[i-1]+t;
}
else if(k==4) {
for(j=i;j%2==0;x[i-1]++,j>>=1);
x[i]=x[i-1];
}
else {
for(r=j=i;j%2==0;x[i-1]++,j>>=1);
for(;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++;
}
else 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++;
}
else
for(i=0;i<n-1;i++)
if(x[n-1]-x[i]-x[n-2-i]>1)
l++;
printf("%d",l);
}