Cod sursa(job #3369544)

Utilizator FabianAndreiParaoanu Fabian Andrei FabianAndrei Data 21 octombrie 2026 08:51:06
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>

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