Cod sursa(job #1768288)

Utilizator MoleRatFuia Mihai MoleRat Data 30 septembrie 2016 17:15:53
Problema Pascal Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.75 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int r,c,rez,rz;
int main()
{
    fin>>r>>c;
    if (c==1)
        fout<<r;
    else
    {
        int n1=r;
        int p=1;
        if (c%2==0)
        {
                while (n1/pow(2,p)>=1)
                {
                    rz=rz+n1/pow(2,p);
                    p++;
                }
        }
        for (int i=0; i<=r; i++)
        {
            int n1=r,n2=r-i,n3=i;
            if (c==6 || c==2 || c==4)
            {
                int p;
                int rz2=0;
                p=1;
                while (n2/pow(2,p)>=1)
                {
                    rz2=rz2+(int)(n2/pow(2,p));
                    p++;
                }
                p=1;
                if (n3!=0)
                    while (n3/pow(2,p)>=1)
                    {
                        rz2=rz2+n3/pow(2,p);
                        p++;
                    }
                if (c==2 && rz>rz2)
                    rez++;
                if (c==4 && rz-rz2>1)
                    rez++;
                if (c==6 && rz>rz2)
                {
                    n1=r,n2=r-i,n3=i;
                    p=1;
                    rz=0;
                    while (n1/pow(3,p)>=1)
                    {
                        rz=rz+n1/pow(3,p);
                        p++;
                    }
                    rz2=0;
                    p=1;
                    while (n2/pow(3,p)>=1)
                    {
                        rz2=rz2+(int)(n2/pow(3,p));
                        p++;
                    }
                    p=1;
                    if (n3!=0)
                        while (n3/pow(3,p)>=1)
                        {
                            rz2=rz2+n3/pow(3,p);
                            p++;
                        }
                    if (rz>rz2)
                        rez++;
                }
            }
            else
            {
                int p=1;
                int rz=0;
                while (n1/pow(c,p)>=1)
                {
                    rz=rz+n1/pow(c,p);
                    p++;
                }
                int rz2=0;
                p=1;
                while (n2/pow(c,p)>=1)
                {
                    rz2=rz2+(int)(n2/pow(c,p));
                    p++;
                }
                p=1;
                if (n3!=0)
                    while (n3/pow(c,p)>=1)
                    {
                        rz2=rz2+n3/pow(c,p);
                        p++;
                    }
                    if (rz>rz2)
                        rez++;
            }
        }
    }
    fout<<rez;
    return 0;
}