Cod sursa(job #2557625)
| Utilizator | Data | 25 februarie 2020 21:52:21 | |
|---|---|---|---|
| Problema | Invers modular | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("inversmodular.in");
ofstream fout("inversmodular.out");
typedef long long lint;
typedef pair<lint,lint> gcdres;
gcdres gcd(lint x, lint y){
if(y == 0){
return {1, 0};
}else{
gcdres res = gcd(y, x%y);
return {res.second, res.first - res.second*(x/y)};
}
}
lint invmod(lint a, lint n){
return (n*100+gcd(a, n).first) % n;
}
lint a, n;
int main(){
fin >> a >> n;
fout << invmod(a, n);
return 0;
}