Cod sursa(job #1000520)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 23 septembrie 2013 01:13:54
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>

using namespace std;

int R, D;
int sol;
int nrdiv;
int Exp[6];
struct DIV
{
    int d, e;
};
DIV a[3];

inline void Read()
{
    ifstream f ("pascal.in");
    f>>R>>D;
    f.close();
}

inline void Desc(int x, int val)
{
    while (x%2 == 0)
        x/=2, Exp[2] += val;
    while (x%3 == 0)
        x/=3, Exp[3] += val;
    while (x%5 == 0)
        x/=5, Exp[5] += val;
}


inline void Solve()
{
    int i, lim = (R+1) / 2 - 1;
    for (i = 1; i<=lim; ++i)
    {
        /// * (R-i) / (i+1)
        Desc(R-i+1, 1);
        Desc(i, -1);
        if ((D == 2 && Exp[2]) || (D == 3 && Exp[3]) || (D == 4 && Exp[2] >= 2) || (D==5 && Exp[5]) || (D == 6 && Exp[2] && Exp[3]))
            sol += 2;
    }
    if (R % 2 == 0)
    {
        Desc(R-i+1, 1);
        Desc(i, -1);
        if ((D == 2 && Exp[2]) || (D == 3 && Exp[3]) || (D == 4 && Exp[2] >= 2) || (D==5 && Exp[5]) || (D == 6 && Exp[2] && Exp[3]))
            ++sol;
    }
}

inline void Write()
{
    ofstream g("pascal.out");
    g<<sol<<"\n";
    g.close();
}

int main()
{
    Read();
    Solve();
    Write();
    return 0;
}