Cod sursa(job #3311286)

Utilizator razvanmrt_06Mariuta Razvan razvanmrt_06 Data 20 septembrie 2025 23:07:09
Problema Mins Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

const int Cmax = 1000005;

int c, d, ciur[Cmax], sol;
bool bad[Cmax];

int main()
{
    ifstream fin("mins.in");
    ofstream fout("mins.out");
    fin >> c >> d;
    c--;
    d--;

    // cautam perechile (x,y) cu 1 <= x <= c && 1 <= y <= d
    // astfel incat cmmdc(x, y) >= 2

    for (int i = 2; i <= min(c, d); i++)
    {
        if (ciur[i] == 0)
        {
            for (int j = i; j <= min(c, d); j += i)
            {
                ciur[j]++;
            }
            for (int j = i * i; j <= min(c, d); j += i * i)
            {
                bad[j] = true;
            }
        }
    }

    for (int k = 2; k <= min(c, d); k++)
    {
        if (bad[k])
        {
            continue;
        }
        if (ciur[k] % 2 == 1)
        {
            sol -= (c / k) * (d / k);
        }
        else
        {
            sol += (c / k) * (d / k);
        }
    }
    fout << sol + (c * d);

    return 0;
}