Pagini recente » Cod sursa (job #3327605) | Diferente pentru problema/vampir intre reviziile 90 si 89 | Cod sursa (job #3358421) | Cod sursa (job #3324011) | Cod sursa (job #3358363)
#include<stdio.h>
#include<stdlib.h>
long long inv_mod(long long a, long long n, long long *x, long long *y)
{
if(n==0)
{
*x=1;
*y=0;
return a;
}
else
{
long long x1, y1,d;
d=inv_mod(n, a % n, &x1, &y1);
*x = y1;
*y = x1 - (a / n) * y1;
return d;
}
}
int main(void)
{
FILE* f,*g;
int T;
if((f=fopen("euclid3.in","r"))==NULL)
{
printf("fisierul de intrare nu a putut fi deschis\n");
exit(EXIT_FAILURE);
}
if((g=fopen("euclid3.out","w"))==NULL)
{
printf("fisierul de iesire nu a putut fi deschis\n");
exit(EXIT_FAILURE);
}
if(fscanf(f,"%d",&T)!=1)
{
printf("citire din fisier nereusita\n");
exit(EXIT_FAILURE);
}
while(T)
{
long long a,b,c,d,x,y;
if(fscanf(f,"%lld %lld %lld",&a,&b,&c)!=3)
{
printf("citire din fisier nereusita\n");
exit(EXIT_FAILURE);
}
d=inv_mod(a,b,&x,&y);
if(c%d)
fprintf(g,"0 0\n");
else
fprintf(g,"%lld %lld\n",x*(c/d),y*(c/d));
T--;
}
if(fclose(f)<0)
{
printf("fisierul de intrare nu a putut fi inchis\n");
exit(EXIT_FAILURE);
}
if(fclose(g)<0)
{
printf("fisierul de iesire nu a putut fi inchis\n");
exit(EXIT_FAILURE);
}
return 0;
}