Cod sursa(job #2860475)
Utilizator | Data | 2 martie 2022 17:52:08 | |
---|---|---|---|
Problema | Invers modular | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.5 kb |
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");
long long a,n,p=1,M,m,i;
int main()
{
f>>a>>n;
M=m=n;
for(i=2;i*i<=m;i++)
{
if(m%i==0)
{
while(m%i==0)
m=m/i;
n=n/i*(i-1);
}
}
if(m!=1)
n=n/m*(m-1);
n--;
while(n)
{
if(n%2==1)
p=p*a%M;
a=a*a%M;
n=n/2;
}
g<<p;
return 0;
}