A. Restauración de números
time limit per test 2.0 s
memory limit per test 256 MB
Pavel tenía dos números enteros positivos a
y b
. Encontró su suma s
y su máximo común divisor g
, y se olvidó a
y b
después de eso. Ayúdalo a restaurar los números originales.
Aporte
Una sola línea contiene dos números enteros s
y g (1 ≤ s ≤ 109, 1 ≤ g ≤ 109)
- suma y máximo común divisor de los números a
y b
.
Producción
Si Pavel cometió un error y no existen tales números a
y b
, genere un solo número - 1
.
El De lo contrario, la salida de dos números enteros positivos a
y b
en una línea individual, un espacio separado por el Si hay varias soluciones posibles, la salida de cualquiera de los ellos ..
Análisis:
Si está utilizando metodología se relaciona la violencia en un tiempo de espera, la primera tarjeta es 21
una muestra, así que hemos optimizado el algoritmo, que hace un a
valor digital g
, entonces si g
y s - g
son g
para el trabajo casual en la entrada g
la salida en línea con el resultado, de lo contrario este valor no existirá a
y b
Mi solución
#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b )
{
return b ? gcd(b, a % b ) : a;
}
int main()
{
long long s, g, k;
cin >> s >> g;
if(gcd(g, s - g) == g && s != g)
cout << max(g, s - g) << " " << min(g, s - g) << endl;
else cout << "-1" << endl;
return 0;
}