Cod sursa(job #2293344)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 30 noiembrie 2018 21:38:52
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.56 kb
#include <fstream>

using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

int R, D, ans;
int p2[5000005], p3[5000005], p5[5000005];

int main()
{
    fin >> R >> D;

    for(int i = 1; i <= R; i++)
    {
        if(i % 2 == 0)
            p2[i] = p2[i / 2] + 1;
        if(i % 3 == 0)
            p3[i] = p3[i / 3] + 1;
        if(i % 5 == 0)
            p5[i] = p5[i / 5] + 1;
    }

    for(int i = 2; i <= R; i++)
    {
        p2[i] += p2[i - 1];
        p3[i] += p3[i - 1];
        p5[i] += p5[i - 1];
    }

    for(int i = 0; i < (R + 1) / 2; i++)
    {
        int nr2 = p2[R] - p2[R - i] - p2[i];
        int nr3 = p3[R] - p3[R - i] - p3[i];
        int nr5 = p5[R] - p5[R - i] - p5[i];


        if(D == 2 && nr2 > 0)
            ans += 2;
        else if(D == 3 && nr3 > 0)
            ans += 2;
        else if(D == 4 && nr2 > 1)
            ans += 2;
        else if(D == 5 && nr5 > 0)
            ans += 2;
        else if(D == 6 && nr2 > 0 && nr3 > 0)
            ans += 2;
    }

    if(R % 2 == 0)
    {
        int i = R / 2;

        int nr2 = p2[R] - p2[R - i] - p2[i];
        int nr3 = p3[R] - p3[R - i] - p3[i];
        int nr5 = p5[R] - p5[R - i] - p5[i];

        if(D == 2 && nr2 > 0)
            ans++;
        else if(D == 3 && nr3 > 0)
            ans++;
        else if(D == 4 && nr2 > 1)
            ans++;
        else if(D == 5 && nr5 > 0)
            ans++;
        else if(D == 6 && nr2 > 0 && nr3 > 0)
            ans++;
    }

    fout << ans;

    return 0;
}