A. Restauración de números

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 ay b. Encontró su suma sy su máximo común divisor g, y se olvidó ay bdespués de eso. Ayúdalo a restaurar los números originales.
Aporte

Una sola línea contiene dos números enteros sy g (1 ≤ s ≤ 109, 1 ≤ g ≤ 109)- suma y máximo común divisor de los números ay b.

Producción

Si Pavel cometió un error y no existen tales números ay b, genere un solo número   - 1.

El De lo contrario, la salida de dos números enteros positivos ay ben 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 21una muestra, así que hemos optimizado el algoritmo, que hace un avalor digital g, entonces si gy s - gson gpara el trabajo casual en la entrada gla salida en línea con el resultado, de lo contrario este valor no existirá ay 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;
}

Supongo que te gusta

Origin blog.csdn.net/qq_51960163/article/details/115282865
Recomendado
Clasificación