Pagini recente » Cod sursa (job #28013) | Monitorul de evaluare | Cod sursa (job #775791) | Cod sursa (job #3280539) | Cod sursa (job #3299830)
#include <stdio.h>
#define longLong long long
int number, modulus;
void computeExtendedGCD(longLong &inverseCandidate, longLong &unused, int a, int b) {
if (b == 0) {
inverseCandidate = 1;
unused = 0;
} else {
computeExtendedGCD(inverseCandidate, unused, b, a % b);
longLong temp = inverseCandidate;
inverseCandidate = unused;
unused = temp - unused * (a / b);
}
}
int main() {
longLong modularInverse = 0, tempValue;
freopen("inversmodular.in", "r", stdin);
freopen("inversmodular.out", "w", stdout);
scanf("%d %d", &number, &modulus);
computeExtendedGCD(modularInverse, tempValue, number, modulus);
if (modularInverse <= 0) {
modularInverse = modulus + modularInverse % modulus;
}
printf("%lld\n", modularInverse);
return 0;
}