Pagini recente » Cod sursa (job #922133) | Cod sursa (job #31181) | Cod sursa (job #1533615) | Cod sursa (job #419367) | Cod sursa (job #2387182)
#include <cstring>
#include <stdio.h>
using namespace std;
const int b=32000;
struct parser{
char *B,*E,*p;
parser(){
B= new char[b+10];
E=B+b;
Load();
}
parser &operator>>(int &x)
{
while((*p<'0' || *p>'9')&& *p!='-')Next();
int semn=1;
if(*p=='-')
{
semn=-1;
Next();
}
x=0;
while(*p>='0' && *p<='9')
{
x=x*10+*p-'0';
Next();
}
return *this;
}
void Load()
{
p=B;
memset(B,0,b);
fread(B,1,b,stdin);
}
void Next()
{
p++;
if(E==p)Load();
}
};
int cmmdc(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return a;
}else{
int x0,y0,d;
d=cmmdc(b,a%b,x0,y0);
x=y0;
y=x0-(a/b)*y0;
return d;
}
}
int main()
{
freopen("euclid3.in","r",stdin);
freopen("euclid3.out","w",stdout);
parser fin;
int n,a,b,c,x,y,d;
fin>>n;
for(;n;n--)
{
fin>>a>>b>>c;
d=cmmdc(a,b,x,y);
if(c%d)printf("0 0\n");
else{
printf("%d %d\n",x*(c/d),y*(c/d));
}
}
return 0;
}