Cod sursa(job #1658419)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 21 martie 2016 15:00:23
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

ifstream f("pascal.in");
ofstream g("pascal.out");

int n, d, d1, i, sol;
int dd[6], df[6];

void desc_frac(int x, int k)
{
    while (x%2 == 0 && x)
        df[2]++, x /= 2;
    while (x%3 == 0 && x)
        df[3]++, x /= 3;
    while (x%5 == 0 && x)
        df[5]++, x /= 5;

    while (k%2 == 0 && k)
        df[2]--, k /= 2;
    while (k%3 == 0 && k)
        df[3]--, k /= 3;
    while (k%5 == 0 && k)
        df[5]--, k /= 5;
}

void desc_d()
{
    while (d%2 == 0 && d)
        dd[2]++, d /= 2;
    while (d%3 == 0 && d)
        dd[3]++, d /= 3;
    while (d%5 == 0 && d)
        dd[5]++, d /= 5;
}

int main()
{
    f >> n >> d;
    d1 = d;
    desc_d();
    for (i = 1; i <= n/2; i++)
    {
        desc_frac(n-i+1, i);

        if (df[2] >= dd[2] && df[3] >= dd[3] && df[5] >= dd[5])
        {
            if (n == 2*i)
                sol++;
            else
                sol += 2;
        }
    }
    g << sol;
    return 0;
}