Cod sursa(job #3256314)

Utilizator andreiciocanCiocan Andrei andreiciocan Data 14 noiembrie 2024 09:06:41
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
int phi(int n)
{
    int r=n ,d=2;
    while(n>1)
    {
        if(n%d == 0)
        {
            r=r/d*(d - 1);
            while(n%d==0)
                n/=d;
        }
        d++;
        if(d*d>n)
            d=n;
    }
    return r;
}
long long plog(long long p,long long a,int m)
{
    long long P=1;
    while(p!=0)
    {
        if(p%2==1)
            P=(long long)P*a%m;
        a=a*a%m;
        p/=2;
    }
    return P;
}
int main()
{
    int a,n;
    fin>>a>>n;
    int x=phi(n);
    long long inv=plog(x-1,a,n);
    fout<<inv;
    return 0;
}