Cod sursa(job #3137755)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 14 iunie 2023 19:39:29
Problema Pascal Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 5e5;

int prec[NMAX + 5][3];
const int prime[3] = {2, 3, 5};

int main()
{
    int n, d;
    in >> n >> d;
    for (int i=1; i<=n; i++)
    {
        int x = i;
        for (int j=0; j<3; j++)
        {
            prec[i][j] = prec[i-1][j];
            while (x % prime[j] == 0)
                x /= prime[j], prec[i][j]++;
        }
    }

    int ans = 0;

    if (d == 2)
    {
        for (int i=1; i<=n; i++)
        {
            if (prec[n][0] - prec[i][0] - prec[n-i][0] > 0)
                ans++;
        }
        out << ans;
    }
    else if (d == 3)
    {
        for (int i=1; i<=n; i++)
        {
            if (prec[n][1] - prec[i][1] - prec[n-i][1] > 0)
                ans++;
        }
        out << ans;
    }
    else if (d == 5)
    {
        for (int i=1; i<=n; i++)
        {
            if (prec[n][2] - prec[i][2] - prec[n-i][2] > 0)
                ans++;
        }
        out << ans;
    }
    else if (d == 4)
    {
        for (int i=1; i<=n; i++)
        {
            if (prec[n][0] - prec[i][0] - prec[n-i][0] > 1)
                ans++;
        }
        out << ans;
    }
    else
    {
        for (int i=1; i<=n; i++)
        {
            if (prec[n][0] - prec[i][0] - prec[n-i][0] > 0 && prec[n][1] - prec[i][1] - prec[n-i][1] > 0)
                ans++;
        }
        out << ans;
    }

    return 0;
}