Cod sursa(job #1053047)

Utilizator deea101Andreea deea101 Data 12 decembrie 2013 02:06:00
Problema Invers modular Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
using namespace std;
ifstream f("inversmodular.in");
ofstream g("inversmodular.out");

int mod(int a)
{
	if(a>=0) return a%3;
	else return (3+a)%3;
}

int main()
{
	int x[3]={1,0},y[3]={0,1},r[3],i=0,a,n,q;
	
	i=1;
	f>>a>>n; 

	r[0]=a; r[1]=-n; 
	x[0]=1; y[0]=0; 
	x[1]=0; y[1]=1;
	while(r[mod(i-1)]%r[i] != 0)
	{
		i=(i+1)%3;
		r[i]=r[mod(i-2)]%r[mod(i-1)];
			
		q=r[mod(i-2)]/r[mod(i-1)];
		x[i]=x[mod(i-2)]-x[mod(i-1)]*q;
		y[i]=y[mod(i-2)]-y[mod(i-1)]*q;
	}
		
	g<<x[i]<<'\n';
}