Cod sursa(job #604145)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 20 iulie 2011 17:02:45
Problema Pascal Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
# include <fstream>
using namespace std;

int r, d, i, sol;

int apar (int a, int b)
{
    int sol = 0;
    while (a > 0)
    {
        a = a / b;
        sol += a;
    }
    return sol;
}
int main ()
{
    ifstream f ("pascal.in");
    ofstream g ("pascal.out");

    f >> r >> d;

    // i! / ( (i - j)! * j!)
    long long dr = r;
    r = (r + 1) >> 1;
    for (i = 0; i < r; ++i)
    {
        int d1, t1, c1, d2, t2, c2;
        d1 = apar (dr, 2);
        t1 = apar (dr, 3);
        //c1 = apar (dr, 5);

        d2 = apar (dr - i, 2);
        t2 = apar (dr - i, 3);
        //c2 = apar (dr - i, 5);
        d2 += apar (i, 2);
        t2 += apar (i, 3);
        //c2 += apar (i, 5);

        int nr = 0;
        if (d == 2) nr = d1 - d2;
        else
        if (d == 3) nr = t1 - t2;
        else
        if (d == 4) nr = d1 / 2 - d2 / 2;
        else
        if (d == 5) nr = c1 - c2;
        else nr = min (d1, t1) - min (d2, t2);

        if (nr > 0) ++sol;
    }

    //sol = (sol << 1) + (!(dr & 1)) * ((v[dr] - (v[dr - r] + v[r])) > 0);
    g << sol << '\n';
    g.close ();
    return 0;
}