Pagini recente » Cod sursa (job #2576967) | Cod sursa (job #933952) | Cod sursa (job #1495541) | Cod sursa (job #2515624) | Cod sursa (job #1119116)
#include <stdio.h>
typedef long long lli;
typedef struct {
lli a, n;
} pair;
int main( ) {
FILE * fin, * fout;
fin = fopen( "inversmodular.in", "r" );
fout = fopen( "inversmodular.out", "w" );
lli A, N;
fscanf( fin, "%lld%lld", &A, &N );
pair p1, p2;
p1.a = 1;
p1.n = 0;
p2.a = 0;
p2.n = 1;
while( p2.a * A + p2.n * N ) {
lli q = ( p1.a * A + p1.n * N ) / ( p2.a * A + p2.n * N );
pair aux = p1;
p1 = p2;
p2.a = aux.a - q * p2.a;
p2.n = aux.n - q * p2.n;
}
printf( "%lld %lld\n", p1.a, p1.n );
if( p1.a < 0 ) {
p1.a = N - ( -p1.a ) % N;
} else {
p1.a = p1.a % N;
}
fprintf( fout, "%lld\n", p1.a );
fclose( fin );
fclose( fout );
}