Cod sursa(job #1749181)

Utilizator ipus1Stefan Enescu ipus1 Data 27 august 2016 23:35:41
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.02 kb
#include<cstdio>
int main ()
{freopen ("pascal.in","r",stdin);
freopen ("pascal.out","w",stdout);
int n,d,x,y,z,p,s,i,j,a,b,c;
scanf("%d%d",&n,&d);
s=0;
x=0;
p=d;
if(d==2||d==3||d==5)
    for(i=1;p<=n;i++)
        {x+=n/p;
        p*=d;
        }
if(d==4)
    {p=2;
    for(i=1;p<=n;i++)
        {x+=n/p;
        p*=2;
        }
    }
if(d==6)
    {p=2;
    for(i=1;p<=n;i++)
        {x+=n/p;
        p*=2;
        }
    p=3;
    a=0;
    for(i=1;p<=n;i++)
        {a+=n/p;
        p*=3;
        }
    }
if(d==2||d==4)
    {for(i=1;i<=(n-1)/2;i++)
        {y=0;
        p=2;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=2;
            }
        z=0;
        p=2;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=2;
            }
        if(d==2&&x-y-z>=1)
            s++;
        else
            if(x-y-z>=2)
                s++;
        }
    s*=2;
    if(n%2==0)
        {y=0;
        p=2;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=2;
            }
        z=0;
        p=2;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=2;
            }
        if(d==2&&x-y-z>=1)
            s++;
        else
            if(x-y-z>=2)
                s++;
        }
    }
if(d==3||d==5)
    {for(i=1;i<=(n-1)/2;i++)
        {y=0;
        p=d;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=d;
            }
        z=0;
        p=d;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=d;
            }
        if(x-y-z>=1)
            s++;
        }
    s*=2;
    if(n%2==0)
        {y=0;
        p=d;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=d;
            }
        z=0;
        p=d;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=d;
            }
        if(x-y-z>=1)
            s++;
        }
    }
if(d==6)
    {for(i=1;i<=(n-1)/2;i++)
        {y=0;
        p=2;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=2;
            }
        z=0;
        p=2;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=2;
            }
        b=0;
        p=3;
        for(j=1;p<=n-i;j++)
            {b+=(n-i)/p;
            p*=3;
            }
        c=0;
        p=3;
        for(j=1;p<=i;j++)
            {c+=i/p;
            p*=3;
            }
        if(x-y-z>=1&&a-b-c>=1)
            s++;
        }
    s*=2;
    if(n%2==0)
        {y=0;
        p=d;
        for(j=1;p<=n-i;j++)
            {y+=(n-i)/p;
            p*=d;
            }
        z=0;
        p=d;
        for(j=1;p<=i;j++)
            {z+=i/p;
            p*=d;
            }
        b=0;
        p=3;
        for(j=1;p<=n-i;j++)
            {b+=(n-i)/p;
            p*=3;
            }
        c=0;
        p=3;
        for(j=1;p<=i;j++)
            {c+=i/p;
            p*=3;
            }
        if(x-y-z>=1&&a-b-c>=1)
            s++;
        }
    }
printf("%d",s);
return 0;
}