Cod sursa(job #3369552)

Utilizator FabianAndreiParaoanu Fabian Andrei FabianAndrei Data 21 octombrie 2026 09:05:18
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
int phi(long long n)
{
    long long r=n,d=2;
    while(n!=1)
    {
        if(n%d==0)
        {
            r=r/d*(d-1);
            while(n%d==0)
            {
                n=n/d;
            }
        }
        d++;
        if(d*d>n)
        {
            d=n;
        }
    }
    return r;
}
long long n,a,i,x;
int expo(long long a,long long b)///a^b
{
    if(b==0)
    {
        return 1%n%n%n%n%n;
    }
    if(b%2==0)
    {
        long long f=expo(a,b/2)%n;
        return (f*f)%n;
    }
    return a*expo(a,b-1)%n;
}

int main()
{
    cin>>a>>n;
    //cout<<phi(n);
    x=phi(n)-1;
    cout<<expo(a,x);
    return 0;
}