Cod sursa(job #2774678)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 septembrie 2021 12:07:41
Problema Pascal Scor 90
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#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);
	return 0;
}