Cod sursa(job #3250731)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 23 octombrie 2024 14:02:02
Problema Pascal Scor 0
Compilator cpp-64 Status done
Runda cex_1 Marime 1.09 kb
#include <fstream>

using namespace std;

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

const int nmax = 5000005;
int r, d, exp[nmax][5], divi[5], numi, prim[5] = {2, 3, 5};

int main()
{
    f.tie(NULL);
    f >> r >> d;

    for(int i = 0; i < 3; i ++)
        while(d % prim[i] == 0)
            d /= prim[i], divi[i] ++;

    for(int i = 1; i <= r; i ++)
    {
        if(i % 2 == 0)
            exp[i][0] = exp[i / 2][0] + 1;

        if(i % 3 == 0)
            exp[i][1] = exp[i / 3][1] + 1;

        if(i % 5 == 0)
            exp[i][2] = exp[i / 5][2] + 1;
    }

    for(int i = 1; i <= r; i ++)
    {
        exp[i][0] += exp[i - 1][0];
        exp[i][1] += exp[i - 1][1];
        exp[i][2] += exp[i - 1][2];
    }

    for(int i = 1; i < r; i ++)
    {
        int pw2 = exp[r][0] - exp[i][0] - exp[r - i][0];
        int pw3 = exp[r][0] - exp[i][0] - exp[r - i][0];
        int pw5 = exp[r][0] - exp[i][0] - exp[r - i][0];

        if(pw2 >= divi[2] && pw3 >= divi[3] && pw5 >= divi[5])
            numi ++;
    }

    g << numi;
    return 0;
}