Cod sursa(job #2327130)

Utilizator sebi110Ciobanu Sebastian sebi110 Data 24 ianuarie 2019 13:49:44
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
typedef long long ll;

ll getphi(ll nr)
{
	ll cur = nr;
	for(ll i = 2;i * i <= nr; ++i)
	{
		if (nr % i == 0)
		{
			while(nr % i == 0)nr /= i;
			cur = (cur / i) * (i - 1);
		}
	}
    if (nr != 1) cur = cur / nr * (nr - 1);
	return cur;
}

ll mod;
ll mypow(ll a,ll p)
{
    ll rez=1;
    while(p!=0)
    {
        if(p%2==1)
            rez=(rez*a)%mod;
        a=(a*a)%mod;
        p/=2;
    }
    return rez;
}
int main()
{
    ll a,n,f;
    freopen("inversmodular.in","r",stdin);
    freopen("inversmodular.out","w",stdout);
    cin>>a>>n;
    f=getphi(n);
    mod=n;
    cout<<mypow(a,f-1)<<'\n';
    return 0;
}