Cod sursa(job #3357018)
| Utilizator | Data | 5 iunie 2026 00:26:10 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | c-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <stdio.h>
typedef long long ll;
ll extended_gcd(ll a, ll b, ll *x, ll *y) {
if (b == 0) {
*x = 1; *y = 0;
return a;
}
ll x1, y1;
ll g = extended_gcd(b, a % b, &x1, &y1);
*x = y1;
*y = x1 - (a / b) * y1;
return g;
}
int main() {
FILE *fin = fopen("inversmodular.in", "r");
FILE *fout = fopen("inversmodular.out", "w");
ll a, n;
fscanf(fin, "%lld %lld", &a, &n);
ll x, y;
extended_gcd(a, n, &x, &y);
x = ((x % n) + n) % n;
fprintf(fout, "%lld\n", x);
fclose(fin);
fclose(fout);
return 0;
}