Cod sursa(job #3032743)

Utilizator MihneaStoicaMihnea Teodor Stoica MihneaStoica Data 22 martie 2023 17:41:40
Problema Frac Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#define int int64_t

using namespace std;

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

int cmmdc (int a, int b)
{
    while (b > 0)
    {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}

int phi (int n)
{
	int result = n;
	for (int p = 2; p * p <= n; ++p)
	{
		if (n % p == 0)
		{
			while (n % p == 0)
				n /= p;

			result -= result / p;
		}
	}
	if (n > 1)
		result -= result / n;

	return result;
}

int32_t main()
{
	int n, p; cin >> n >> p;
    int nr = 0, pos = 0, q = phi(n);
    while (pos + q < p)
    {
        nr += n;
        pos += q;
    }
    //cout << nr << " " << pos << '\n';
    while (pos < p)
    {
        nr ++;
        if (cmmdc(nr, n) == 1)
        {
            pos ++;
        }
    }
    cout << nr << '\n';
}