Cod sursa(job #2252806)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 3 octombrie 2018 08:36:47
Problema Invers modular Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
long long a,n;
long long nr;
long long eul(long long x)
{
    long long aux=x;
    for(int i=2;i*i<=x;++i)
    {
        if(x%i==0){
            while(x%i==0)
                x/=i;
            aux=(aux/i)*(i-1);
        }

    }
    if(x!=1)
        aux=(aux/x)*(x-1);
    return aux;
}
long long put(long long x,long long y)
{
    long long ras=1;
    for(long long i=1;i<=y;i<<=1)
    {
        if(y&i)
            ras=(ras*x)%n;
        x=(x*x)%n;
    }
    return ras;
}
int main()
{
    f>>a>>n;
    nr=eul(n)-1;

    g<<put(a,nr);
}