Cod sursa(job #3197890)

Utilizator Bianca2507Negret Bianca Bianca2507 Data 27 ianuarie 2024 17:07:04
Problema Invers modular Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
int a,n;
int euler(int n)
{
    int prod=n;
    for(int d=2;d*d<=n;d++)
    {
        if(n%d==0)
        {
            prod/=d;
            prod*=(d-1);
            while(n%d==0)
                n=n/d;
        }
    }
    if(n!=1)
    {
        prod/=n;
        prod=prod*(n-1);
    }
    return prod;
}
int putere(int b)
{
    if(b==0)
        return 1;
    else
    {
        int x=putere(b/2);
        if(b%2==0)
            return 1ll*(x*x)%n;
        else
            return 1ll*(x*x)%n*1ll*a%n;

    }
}
int main()
{
    cin>>a>>n;
    int k=euler(n);
    ///(a la puterea k-1 )%n -inversul modular cautat
    cout<<putere(k-1);
    return 0;
}