Cod sursa(job #1459602)

Utilizator NistorSergiuNistor Sergiu NistorSergiu Data 10 iulie 2015 12:52:28
Problema Pascal Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

int divFact(int n, int d)
{
    int sol = 0;
    int pd = d;
    while(pd <= n)
    {
        sol += n / pd;
        pd *= d;
    }
    return sol;
}

int power(int line, int col, int d)
{
    if(d == 4)
    {
        return ((divFact(line, 2) - divFact(line - col, 2) - divFact(col, 2)) / 2);
    }
    else if(d == 6)
    {
        return min((divFact(line, 2) - divFact(line - col, 2) - divFact(col, 2)), (divFact(line, 3) - divFact(line - col, 3) - divFact(col, 3)));
    }
    else
    {
        return (divFact(line, d) - divFact(line - col, d) - divFact(col, d));
    }
    return 0;
}

int check(int line, int col, int d)
{
    if(power(line, col, d))
        return 1;
    return 0;
}

int main()
{
    int r, d;
    int sol = 0;
    ifstream f("pascal.in");
    f >> r >> d;
    f.close();
    for(int j = 0; j <= r; j++)
        sol += check(r, j, d);
    ofstream g("pascal.out");
    g << sol << "\n";
    g.close();
    return 0;
}