Cod sursa(job #1132165)

Utilizator omerOmer Cerrahoglu omer Data 2 martie 2014 19:49:02
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include<stdio.h>
using namespace std;
FILE *f,*g;



int main()
{

    int i,t,a,b,c,a1,a2,b1,b2,aux,aju,r1,r2,ss;
    f=fopen("euclid3.in","r");
    g=fopen("euclid3.out","w");
    fscanf(f,"%d",&t);
    for(i=1;i<=t;i++)
        {
            fscanf(f,"%d%d%d",&a,&b,&c);
            bool as=1,bs=1,cs=1;
            if (a<0) {a=-a;as=0;}
            if (b<0) {b=-b;bs=0;}
            if (c<0) {c=-c;cs=0;}
            b1=1;a1=0;b2=0;a2=1;
            r1=b;r2=a;
            while(r2>0)
                {
                    aux=r1/r2;
                    aju=r1%r2;
                    ss=b1;b1=b2;b2=ss-b2*aux;
                    ss=a1;a1=a2;a2=ss-a2*aux;
                    r1=r2;
                    r2=aju;
                }
            if (c%r1!=0) fprintf(g,"0 0\n");
            else
                {
                    long long qq,ww;
                    qq=(long long)b1*(c/r1);
                    ww=(long long)a1*(c/r1);
                    ww%=b;
                    qq=((long long)c-ww*a)/b;
                    if (as+cs) ww=-ww;
                    if(bs+cs) qq=-qq;
                    fprintf(g,"%lld %lld\n",ww,qq);
                }
        }














    return 0;
}