Cod sursa(job #2138151)

Utilizator tudorbuhniaTudor Buhnia tudorbuhnia Data 21 februarie 2018 13:37:04
Problema Pascal Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <fstream>

using namespace std;
int n,d2,d3,d5,j,cr=0,d;
void res()
{
    if(d==2)
    {
        if(d2>=1)
        {
            cr+=2;
            if(j==n/2 && n%2==0)
                cr--;
        }
    }
    if(d==3)
    {
        if(d3>=1)
        {
            cr+=2;
            if(j==n/2 && n%2==0)
                cr--;
        }
    }
    if(d==4)
    {
        if(d2>=2)
        {
            cr+=2;
            if(j==n/2 && n%2==0)
                cr--;
        }
    }
    if(d==5)
    {
        if(d5>=1)
        {
            cr+=2;
            if(j==n/2 && n%2==0)
                cr--;
        }
    }
    if(d==6)
    {
        if(d2>=1 && d3>=1)
        {
            cr+=2;
            if(j==n/2 && n%2==0)
                cr--;
        }
    }
}
int main()
{
    ifstream cin("pascal.in");
    ofstream cout("pascal.out");
    unsigned long long int p,cnt,c2=1,cc;
    cin >> n >> d;
    if(n==0 || n==1)
    {
        cout << 0;
        return 0;
    }
    p=n;
    cc=n;
    while(cc%2==0)
    {
        cc=cc/2;
        d2++;
    }
    while(cc%3==0)
    {
        cc=cc/3;
        d3++;
    }
    while(cc%5==0)
    {
        cc=cc/5;
        d5++;
    }
    cnt=n-1;
    c2=2;
    for(j=1; j<=n/2; j++)
    {
        res();
        cc=cnt;
        while(cc%2==0)
        {
            cc=cc/2;
            d2++;
        }
        while(cc%3==0)
        {
            cc=cc/3;
            d3++;
        }
        while(cc%5==0)
        {
            cc=cc/5;
            d5++;
        }
        cc=c2;
        while(cc%2==0)
        {
            cc=cc/2;
            d2--;
        }
        while(cc%3==0)
        {
            cc=cc/3;
            d3--;
        }
        while(cc%5==0)
        {
            cc=cc/5;
            d5--;
        }
        cnt--;
        c2++;
    }
    cout << cr;
    return 0;
}