Pagini recente » Cod sursa (job #2843364) | Cod sursa (job #2926714) | Cod sursa (job #1872389) | Cod sursa (job #2018359) | Cod sursa (job #983456)
Cod sursa(job #983456)
#include <stdio.h>
#include <algorithm>
using namespace std;
int A, N;
void read(){
freopen("inversmodular.in", "r", stdin);
scanf("%d", &A);
scanf("%d", &N);
}
void print(int x){
printf("%d", x);
}
void solve(){
long long int q, r, t0, t1, t2, N_rezerva;
N_rezerva = N;
q = N / A;
r = N % A;
t0 = 0;
t1 = 1;
t2 = t0 - q*t1;
if(r == 1){
//print(1);
if(t2 > 0)
print(t2);
else
print(N_rezerva + t2);
}
else{
//print(0);
while(r != 1){
q = N / A;
r = N % A;
t2 = t0 - q * t1;
//print(t2);
N = A;
A = r;
t0 = t1;
t1 = t2;
//print(t2);
}
if(t2 > 0)
print(t2);
else
print(N_rezerva + t2);
}
}
void invers_modular(long int n_input, long int b_input){
long int n, b, q, r, t_i, t_i1, t_i2;
n = n_input;
b = b_input;
r = n % b;
t_i = 0;
t_i1 = 1;
printf(" n | b | q | r | t_i | t_i1 | t_i2 |");
printf("\n---------------------------------------------------------------------------------\n");
while(r != 1){
q = n / b;
r = n % b;
t_i2 = t_i - q * t_i1;
printf(" %d | %d | %d | %d | %d | %d | %d |", n, b, q, r, t_i, t_i1, t_i2);
printf("\n---------------------------------------------------------------------------------\n");
n = b;
b = r;
t_i = t_i1;
t_i1= t_i2;
}
}
int main(){
freopen("inversmodular.out", "w", stdout);
read();
//invers_modular(N,A);
solve();
return 0;
}