Cod sursa(job #2293337)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 30 noiembrie 2018 21:33:58
Problema Pascal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 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 sp2[5000005], sp3[5000005], sp5[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;

        sp2[i] = sp2[i - 1] + p2[i];
        sp3[i] = sp3[i - 1] + p3[i];
        sp5[i] = sp5[i - 1] + p5[i];
    }

    for(int i = 0; i <= R; i++)
    {
        int nr2 = sp2[R] - sp2[R - i] - sp2[i];
        int nr3 = sp3[R] - sp3[R - i] - sp3[i];
        int nr5 = sp5[R] - sp5[R - i] - sp5[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;
}