Cod sursa(job #1521011)

Utilizator Darius15Darius Pop Darius15 Data 9 noiembrie 2015 20:15:32
Problema Invers modular Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>

using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
int a,n,p,i,l,c;
long long pow,ans;
int main()
{
    f>>a>>n;
    l=n;
    p=n;
    for (i=2;i*i<=n;i++)
    if (n%i==0){
    while(n%i==0)
      n/=i;
      p=(p/i)*(i-1);
    }
    if (n>1)
       p=(p/n)*(n-1);
    p--;
    ans=1;
    pow=a%l;
    for (i=0;(1<<i)<=p;i++)
    {
       if (p & (1<<i))
         ans=((ans%l)*(pow%l))%l;
       pow=((pow%l)*(pow%l))%l;
    }
    g<<ans<<' ';
    return 0;
}