Cod sursa(job #2882048)

Utilizator Andrei_ierdnANeculau Rares-Andrei Andrei_ierdnA Data 31 martie 2022 09:51:30
Problema Mins Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>

using namespace std;

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

long long c, d, i, j, sol, x, cnt[1000100], mini;

int main()
{
    f >> c >> d;
    c--;
    d--;
    mini = min(c, d);
    sol = sol + (c / 2) * (d / 2);
    sol = sol + (c / 3) * (d / 3);
    sol = sol - (c / 6) * (d / 6);
    for (i = 5; i <= mini; i += 2)
    {
        x = 1 - cnt[i];
        sol = sol + x * (c / i) * (d / i);
        sol = sol - x * (c / (i * 2)) * (d / (i * 2));
        sol = sol - x * (c / (i * 3)) * (d / (i * 3));
        sol = sol + x * (c / (i * 6)) * (d / (i * 6));
        if (x)
        {
            for (j = i; j <= mini; j += 2 * i)
            {
                cnt[j] += x;
                j += 4 * i;
                if (j <= mini)
                    cnt[j] += x;
            }
        }
        i += 4;
        if (i <= mini)
        {
            x = 1 - cnt[i];
            sol = sol + x * (c / i) * (d / i);
            sol = sol - x * (c / (i * 2)) * (d / (i * 2));
            sol = sol - x * (c / (i * 3)) * (d / (i * 3));
            sol = sol + x * (c / (i * 6)) * (d / (i * 6));
            if (x)
            {
                for (j = i; j <= mini; j += 2 * i)
                {
                    cnt[j] += x;
                    j += 4 * i;
                    if (j <= mini)
                        cnt[j] += x;
                }
            }
        }
    }
    g << c * d - sol;
    f.close();
    g.close();
    return 0;
}