Cod sursa(job #2891314)

Utilizator Stefanstef99Stefan Puica Stefanstef99 Data 18 aprilie 2022 10:21:34
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");

int a,n;
int Phi(int n)
{
    int i,p=n;
    for(i=2;i*i<=n && n>1;i++)
    {
        if(n%i==0)
        {
            p=p/i*(i-1);
            while(n%i==0) n/=i;
        }
    }
    if(n>1) p=p/n*(n-1);
    return p;
}

int QuickExpo(int a,int k,int n)
{
    int rez=1;
    while(k>0)
    {
        if(k%2==1) rez=rez*1LL*a%n;
        k/=2;
        a=1LL*a*a%n;
    }
    return rez;
}

int main()
{
    int phi;
    fin>>a>>n;
    phi=Phi(n);
    fout<<QuickExpo(a,phi-1,n);
    return 0;
}