Pagini recente » Cod sursa (job #388599) | Cod sursa (job #2166546) | Cod sursa (job #1447183) | Cod sursa (job #1709789) | Cod sursa (job #1756819)
#include <fstream>
using namespace std;
long long put(long long a, long long p, long long mod)
{
if (p == 0)
return 1;
long long n = put(a, p / 2, mod);
n *= n;
n %= mod;
if (p & 1)
n *= a;
return (n % mod);
}
int main()
{
int a, b;
ifstream in("inversmodular.in");
ofstream out("inversmodular.out");
in >> a >> b;
int phi = 1;
for (int i = 2; i * i <= b; i++) {
if (b % i == 0) {
phi *= i - 1;
b /= i;
while (b % i == 0) {
phi *= i;
b /= i;
}
}
}
if (b != 1)
phi *= b - 1;
out << put(a, phi - 1, b);
return 0;
}