Cod sursa(job #1015493)

Utilizator florin.elfusFlorin Elfus florin.elfus Data 24 octombrie 2013 19:05:34
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>

using namespace std;

int R, D;
int d0, d1, d2;
int total;
char p0[5000002], p1[5000002], p2[5000002];

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

    fin >> R >> D;

    for (int i = 1; i <= 5000000; ++i)
    {
        if (i % 2 == 0)
        {
            p0[i] = p0[i / 2] + 1;
            p1[i] = p1[i / 2];
            p2[i] = p2[i / 2];
        }
        else if (i % 3 == 0)
        {
            p0[i] = p0[i / 3];
            p1[i] = p1[i / 3] + 1;
            p2[i] = p2[i / 3];
        }
        else if (i % 5 == 0)
        {
            p0[i] = p0[i / 5];
            p1[i] = p1[i / 5];
            p2[i] = p2[i / 5] + 1;
        }
    }

    for (int i = 1; i < R; ++i)
    {
        d0 += p0[R - i + 1] - p0[i];
        d1 += p1[R - i + 1] - p1[i];
        d2 += p2[R - i + 1] - p2[i];

        if (D == 2 && d0) ++total;
        if (D == 3 && d1) ++total;
        if (D == 4 && d0 >= 2) ++total;
        if (D == 5 && d2) ++total;
        if (D == 6 && d0 && d1) ++total;
    }

    fout << total;

    fin.close();
    fout.close();
}