Cod sursa(job #3323115)

Utilizator Andrei_PanaAndrei Pana Andrei_Pana Data 17 noiembrie 2025 10:17:28
Problema Invers modular Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
using namespace std;

ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");

int phi(int x){
  int euler=x,d=2;
  while(d*d<=x){
    if(x%d==0){
      euler=euler/d*(d-1);
      while(x%d==0){
        x/=d;
      }
    }
    d++;
  }

  if(x>1){
    euler=euler/x*(x-1);
  }
  return euler;
}

long long modPow(long long a,int exp,int mod){
  long long res=1;
  while(exp){
    if(exp&1){
      res=(res*a)%mod;
    }
    a=(a*a)%mod;
    exp/=2;
  }
  return res;
}

int main(){
  int a,n;

  cin>>a>>n;
  cout<<modPow(a,phi(n)-1,n);

  return 0;
}