Cod sursa(job #1529545)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 21 noiembrie 2015 00:15:31
Problema Algoritmul lui Euclid extins Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <stdio.h>
using namespace std;

void euclidrecursiv(int a, int b, int *d, int* x, int* y) {
  if (b == 0) {
     *d = a;
    *x = 1;
    *y = 0;
  } else {
    int x1, y1;
    euclidrecursiv(b, a % b, d, &x1, &y1);
    *x = y1;
    *y = x1 - (a / b) * y1;
  }
}

int main(void) {

FILE *fin, *fout;

  int n,i,a, b,d, c,d1, x1, y1,cmmdc;

fin = fopen( "euclid3.in", "r" );
fout = fopen( "euclid3.out", "w" );

fscanf(fin,"%d", &n);
cout<<n<<endl;
for (i=1;i<=n;i++){
fscanf(fin,"%d %d %d", &a, &b,&c);
cout<<a<<" "<<b<<" "<<c<<endl;

euclidrecursiv(a, b, &d, &x1, &y1);
cmmdc=d;
cout<<d<<" "<<x1<<" "<<y1<<endl;
if(c%d!=0){
x1=0;y1=0;
fprintf(fout,"%d %d\n",x1,y1);
}
else{
a=a*c/d;
b=b*c/d;
cout<<a<<" "<<b<<endl;
 euclidrecursiv(a, b, &d, &x1, &y1);
 cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<x1<<" "<<y1<<endl;
 x1=x1*c/cmmdc;
 y1=y1*c/cmmdc;
  cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<x1<<" "<<y1<<endl;
fprintf(fout,"%d %d\n",x1,y1);
}

}
fclose( fin );
fclose( fout );


    return 0;
}