Cod sursa(job #209945)

Utilizator BonnYBogdan BonnY Data 25 septembrie 2008 19:24:00
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include<stdio.h>
//#include <cstring>
//#include <cmath>
using namespace std;

int cmmdc (int a, int b){
 if (!b) return a;
 return cmmdc(b, a%b);
}
void euclid (int a, int b, int *d, int *x, int *y) {
 if (b==0) { *d=a; *x=1; *y=0; }
 else {
	int x0, y0;
	euclid(b, a%b, d, &x0, &y0);
        *x=y0;
        *y=x0-(a/b)*y0;
      }
}

int main()
{
 ifstream iFis("euclid3.in");
 ofstream oFis("euclid3.out"); // freopen("euclid3.out", "w", stdout);
 int a,b,c,d,x,y,t, cc, aa, dd; 
 iFis>>t; cout<<t;
 for(int i=t; i>=1; i--){
  iFis>>a; iFis>>b; iFis>>d; 
  c=cmmdc(a,b); 
  euclid(a,b,&c,&x,&y); cout<<a<< " "<<b<<" "<<c<<" "<<d<<" "<<endl;
  if(d%c==0) oFis<<x*(d/c)<<" "<<y*(d/c)<<endl; // printf("%d %d\n", x*c/a,y*c/a);
  else oFis<<"0 0\n"; // printf("0 0\n");
 }
 return 0;
}