Cod sursa(job #3225380)

Utilizator HadefAlexandru Haidet Hadef Data 17 aprilie 2024 14:48:48
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int a,b;

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

long long recursiv(long long x,int n)
{
    if(n ==0)
        return 1;
    long long x_pat = recursiv(x,n/2);
    x_pat = (x_pat * x_pat)%b;

    if(n%2==0)
        return x_pat;
    else
        return (x*x_pat)%b;
}

int main()
{
    fin>>a>>b;
    fout<<recursiv(a,phi(b)-1);
    //cout<<nr_prime_mici();
    return 0;
}