Cod sursa(job #3369551)
| Utilizator | Data | 21 octombrie 2026 09:04:40 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.74 kb |
#include <fstream>
using namespace std;
ifstream cin("inversmodular.in");
ofstream cout("inversmodular.out");
int phi(int n)
{
int r=n,d=2;
while(n!=1)
{
if(n%d==0)
{
r=r/d*(d-1);
while(n%d==0)
{
n=n/d;
}
}
d++;
if(d*d>n)
{
d=n;
}
}
return r;
}
int n,a,i,x;
int expo(int a,int b)///a^b
{
if(b==0)
{
return 1%n%n%n%n%n;
}
if(b%2==0)
{
int f=expo(a,b/2)%n;
return (f*f)%n;
}
return a*expo(a,b-1)%n;
}
int main()
{
cin>>a>>n;
//cout<<phi(n);
x=phi(n)-1;
cout<<expo(a,x);
return 0;
}
