Cod sursa(job #239964)

Utilizator DraStiKDragos Oprica DraStiK Data 6 ianuarie 2009 15:56:46
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <algorithm>
using namespace std;
int r,d,nrt;
int prim (int d)
{
    if (d==2 || d==3 || d==5)
        return 1;
    else
        return 0;
}
int main ()
{
    freopen ("pascal.in","r",stdin);
    freopen ("pascal.out","w",stdout);    
    int i,aux,nr1,nr2,nr3;
    scanf ("%d%d",&r,&d);
    if (prim (d))
    {
        for (aux=r, nr1=0; aux; nr1+=aux/=d);
        if (r%2==1)
            for (i=0; i<=r/2; ++i)
            {
                for (aux=r-i, nr2=0; aux; nr2+=aux/=d);
                for (aux=i, nr3=0; aux; nr3+=aux/=d);
                if (nr1>nr2+nr3)
                    nrt+=2;
            }
        else
        {
            for (i=0; i<r/2; ++i)
            {
                for (aux=r-i, nr2=0; aux; nr2+=aux/=d);
                for (aux=i, nr3=0; aux; nr3+=aux/=d);
                if (nr1>nr2+nr3)
                    nrt+=2;
            }
            for (aux=r-r/2, nr2=0; aux; nr2+=aux/=d);
            for (aux=r/2, nr3=0; aux; nr3+=aux/=d);
            if (nr1>nr2+nr3)
                nrt++;
        }    
    }
    else if (d==4)
    {
        d/=2;
        for (aux=r, nr1=0; aux; nr1+=aux/=d);
        if (r%2==1)
            for (i=0; i<=r/2; ++i)
            {
                for (aux=r-i, nr2=0; aux; nr2+=aux/=d);
                for (aux=i, nr3=0; aux; nr3+=aux/=d);
                if (nr1>nr2+nr3 && (nr1-nr2-nr3)%2==0)
                    nrt+=2;
            }
        else
        {
            for (i=0; i<r/2; ++i)
            {
                for (aux=r-i, nr2=0; aux; nr2+=aux/=d);
                for (aux=i, nr3=0; aux; nr3+=aux/=d);
                if (nr1>nr2+nr3)
                    nrt+=2;
            }
            for (aux=r-r/2, nr2=0; aux; nr2+=aux/=d);
            for (aux=r/2, nr3=0; aux; nr3+=aux/=d);
            if (nr1>nr2+nr3 && (nr1-nr2-nr3)%2==0)
                nrt++;
        }
    }
    printf ("%d",nrt);
    return 0;  
}