Cod sursa(job #2478514)

Utilizator ArkhamKnightyMarco Vraja ArkhamKnighty Data 22 octombrie 2019 11:38:24
Problema Mins Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>

using namespace std;

ifstream cin("mins.in");
ofstream cout("mins.out");

unsigned long long pinex(int x, int y)
{
    //cout << x << ' ' << y << "  ";

    unsigned long long s = 0;

    long long a[1001];
    int k = 0, i;

    int d = 3;

    if(!(y & 1))
    {
        a[++k] = 2;

        while(!(y & 1))
            y >>= 1;
    }

    while(d * d <= y)
    {
        if(!(y % d))
        {
            a[++k] = d;

            while(!(y % d))
                y /= d;
        }

        d += 2;
    }

    if(y > 1)
        a[++k] = y;

    long long pr;

    int contor = 0;

    s = x;

    for (i = 1 ; i < (1 << k); i++)
    {
        pr = 1;
        contor = 0;

        for (int j = 0 ; j < k; j++)
            if ((i & (1 << j)))
                contor++, pr *= a[j+1];

         s += ((contor%2 == 0 ? 1 : -1) * x / pr);
    }

    return s;

}

void citire()
{
    int c, d;
    cin >> c >> d;

    long long s = c - 1;

    for(int i = 2 ; i < d ; i++)
        s += pinex(c - 1, i);

    cout << s << '\n';
}

int main()
{
    citire();
    return 0;
}