Cod sursa(job #229121)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 9 decembrie 2008 12:48:43
Problema Algoritmul lui Euclid extins Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>  
long int a[20],b[20],c,x[20],y[20],i,t,nt,sa,sb,n;  
int main()  
{  
      FILE *f,*g;f=fopen("euclid3.in","r");g=fopen("euclid3.out","w");  
      fscanf(f,"%ld",&t);  
      for(nt=1;nt<=t;nt++)  
      { fscanf(f,"%ld%ld%ld",&a[1],&b[1],&c);  
        if(c<0){a[1]=-a[1];b[1]=-b[1];c=-c;}  
        sa=(a[1]>=0)?1:(-1);a[1]*=sa;sb=(b[1]>=0)?1:(-1);b[1]*=sb;  
        i=1;  
        while(b[i]){a[i+1]=b[i];b[i+1]=a[i]%b[i];i++;}  
        n=i;  
        if(c%a[n]){x[1]=0;y[1]=0;}  
        else  
        { x[n]=c/a[n];y[n]=0;  
          for(i=n-1;i>=1;i--)  
          { x[i]=y[i+1];y[i]=x[i+1]-(a[i]/b[i])*y[i+1];}  
        }  
        x[1]*=sa;y[1]*=sb;  
        fprintf(g,"%ld %ld\n",x[1],y[1]);  
      }  
      fcloseall();  
      return 0;  
}