Cod sursa(job #966740)

Utilizator dropsdrop source drops Data 26 iunie 2013 15:29:43
Problema Invers modular Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <queue>
#include <deque>
#include <list>
#include <ctime>
#include <string>
#include <algorithm>
using namespace std;
ifstream ff("inversmodular.in");
ofstream gg("inversmodular.out");

struct tuplu{ int a,b; tuplu(int a0=0, int b0=0){a=a0;b=b0;} };
tuplu operator-(tuplu a,tuplu b){ return tuplu(a.a+b.a, a.b+b.b); }
tuplu operator*(int q, tuplu a){ return tuplu(q*a.a, q*a.b); }


void gcd(int a, int b, tuplu& v){
	int q,r;
	tuplu va(1,0),vb(0,1),vr;
	while(b!=0){
		q=a/b;
		r=a%b;
		a=b;
		b=r;
		vr=va-q*vb;
		va=vb;
		vb=vr;
	}
	v=va;
}

int main(){
	int a,n;
	tuplu v;
	ff >> a >> n;
	gcd(a,n,v);
	gg << v.a;
	return 0;
}