Cod sursa(job #3280185)

Utilizator stefan_dore_Stefan Dore stefan_dore_ Data 25 februarie 2025 19:01:41
Problema Mins Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f ("mins.in");
ofstream g ("mins.out");

const int NMAX = 1000000;

int c, d, n,
    ciurn[NMAX+1];
bool ciurp[NMAX+1];
long long card;

void calcul(int x) {
    if (ciurn[x] == 0) {
        for (int i=x; i<=n; i+=x)
            ciurn[i]++;
        long long k = 1LL * x * x;
        for (long long j = k; j<=n; j+=k)
            ciurp[j] = 1;
    }
    if (ciurp[x] == 0) {
        long long t = 1LL * (c/x) * (d/x);
        if (ciurn[x] % 2 == 0)
            card -= t;
        else
            card += t;
    }
}

int main()
{
    f >> c >> d;
    //
    c--; d--;
    n = min(c, d);
    //
    for(int i=2; i<=n; i++)
        calcul(i);
    //
    g << 1LL * c * d - card;
    //
    f.close();
    g.close();
    return 0;
}