Pagini recente » Cod sursa (job #310448) | Cod sursa (job #337173) | Cod sursa (job #1521323) | Cod sursa (job #1302096) | Cod sursa (job #943118)
Cod sursa(job #943118)
#include <fstream>
#include <limits>
using namespace std;
ifstream in("euclid3.in");
ofstream out("euclid3.out");
void euclid(long a, long b, long *d, long *x, long *y);
void euclid_extins(long a,long b,long c);
long cmmdc(long a,long b);
int main()
{
long n,a,b,c;
in>>n;
in.ignore(numeric_limits<streamsize>::max(),'\n');
for(int i=0;i<n;++i)
{
in>>a>>b>>c;
in.ignore(numeric_limits<streamsize>::max(),'\n');
euclid_extins(a,b,c);
}
in.close();
out.close();
return 0;
}
void euclid_extins(long a,long b,long c)
{
long d=cmmdc(a,b);
long x,y;
if (c%d!=0)
{
out<<0<<" "<<0<<"\n";
}
else
{
euclid(a,b,&d,&x,&y);
out<<x*c/d<<" "<<y*c/d<<"\n";
}
}
long cmmdc(long a,long b)
{
long r;
while (b)
{
r=a%b;
a=b;
b=r;
}
return a;
}
void euclid(long a, long b, long *d, long *x, long *y)
{
if (b == 0) {
*d = a;
*x = 1;
*y = 0;
} else {
long x0, y0;
euclid(b, a % b, d, &x0, &y0);
*x = y0;
*y = x0 - (a / b) * y0;
}
}