Cod sursa(job #2036073)

Utilizator Mihai_PredaPreda Mihai Dragos Mihai_Preda Data 10 octombrie 2017 11:38:13
Problema Mins Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int main()
{
    ifstream in("mins.in");
    ofstream out("mins.out");
    long long c, d;
    in >> c >> d;
    --c, --d;
    long long mn = min(c, d);
    vector<int> divizori(mn + 1, 0);
    vector<bool> bun(mn + 1, true);
    for(long long i = 2; i <= mn; ++i)
        if(!divizori[i])
        {
            for(long long j = i; j <= mn; j += i)
                divizori[j]++;
            for(long long j = i * i; j <= mn; j += (i * i))
                bun[j] = false;
        }
    long long sol = c * d;
    for(int i = 2; i <= mn; ++i)
        if(bun[i])
        {
            if(divizori[i] % 2 == 0)
                sol += (c / i) * (d / i);
            else
                sol -= (c / i) * (d / i);
        }
    out << sol;
    in.close();
    out.close();
    return 0;
}