Cod sursa(job #1753167)

Utilizator Y.MalmsteenB.P.M. Y.Malmsteen Data 5 septembrie 2016 23:13:01
Problema Mins Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;

const int MAX = 1000001;

int ciurn[MAX], ciurp[MAX], c, d, n;

long long card;

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

void calcul(int i)
{
    if(ciurn[i] == 0)
    {
        for(int j = i; j <= n; j += i)
            ciurn[j]++;
        long long k = i * i;
        for(long long jj = k; jj <= n; jj += k)
            ciurp[jj] = 1;
    }
    if(ciurp[i] == 0)
    {
        long long t = 1LL * (c / i) * (d / i);
        if(ciurn[i] % 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 << endl;
    f.close();
    g.close();
    return 0;
}