Pagini recente » Cod sursa (job #849796) | Cod sursa (job #198703) | Cod sursa (job #2291506) | Cod sursa (job #352165) | Cod sursa (job #1789805)
#include <fstream>
#define ll long long
using namespace std;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
ll a, n, tmp;
ll get_tmp()
{
int s = n, c = n;
for(ll i = 2; i * i <= n; ++i)
{
if(c % i == 0)
{
s = s - s / i;
while(c % i == 0)
c = c / i;
}
}
if(c != 1)
s = s - s / c;
return s;
}
ll put()
{
ll meh = 1;
while(tmp > 0)
{
if(tmp % 2 == 1)
{
meh = meh * meh;
meh = meh % n;
--tmp;
}
a = a * a;
a = a % n;
tmp = trmp / 2;
}
return a;
}
int main()
{
in >> a >> n;
tmp = get_tmp();
out << put();
}