Significado de las preguntas: una serie de grupos que buscan el más corto, el número de éstos es XOR u, v y es.
Solución: 1, se encontró para XOR Además paridad y es equivalente a, la u, se cumple v paridad antes de la misma condición. 2, una serie de exclusiva o dividido en varios números deben no es mayor que el número original, por lo que u <= v.
3, 当 u == v && u == 0, 为 0,4, u == v && u! = 0, u 等于
5, u ^ 0 = 0, 3 dividida en consideración el número, u, (vu) / 2, (vu) / 2. satisfecho.
6, la más corta, de acuerdo con a ^ b = a + b -. 2 * (a & b) supone responder a, b a ^ b = (u ^ x) ^ x, a + b = (u + x) +. X. Si u ^ x = u + x. se puede combinar.
#include <bits / STDC ++ h.> using namespace std; typedef largo largo ll; #define int ll #define mod 998244353 #define gcd (m, n) __gcd (m, n) rep #define (i, j, n) for (int i = j; i <= n; i ++) #define rojo ( i, n, j) for (int i = n; i> = j; i--) #define mE (x, y) memset (x, y, sizeof (x)) int lcm (int a, int b) {return a * b / gcd (a, b);} ll quickpow (ll a, ll b) {ll ans = 1, mientras que (b) {if (b & 1) ans = ans * a mod%; b >> = 1, a = a * a mod%;} ans de retorno;} // int euler1 (int x) {int ans = x; for (int i = 2; i * i <= x; i ++) si (x% i == 0) {Respuesta-= ans / i, mientras que (x% i == 0) x / = i;} if (x> 1) Respuesta-= American National Standard / x; ans de retorno;} // int const N = 1E7 + 9; int VIS [n], el primer [n], phi [N]; int euler2 (int n) {ME (vis, true); int len = 1; rep (i, 2, n) {if (vis [i] ) {prime [len ++] = i, phi [i] = i-1;} for (int j = 1; j <len && prime [j] * i <= n; j ++) {vis [i * prime [j]] = 0; si (% prime i [j] == 0) {phi [i * prime [j]] = phi [i] * prime [j]; break;} else {phi [i * prime [j]] = phi [i] * phi [prime [j]];}}} len retorno} #define INF 0x3f3f3f3f #define acos PI (-1) #define pii par <int, int> #define fi primera #define SE segundo # definir LSON l, mediados, raíz << 1 #define rson mediados + 1, r, raíz << 1 | 1 #define pb push_back #define mp make_pair #define todos (v) v.begin (), V.END () tamaño #define (v) (int) (v.size ()) #define cin (x) scanf ( "% LLD", y x); int const N = 1E7 + 9; const doble esp = 1e-6; 3 << endl; } anulará solve () { int u, v; cin >> T >> v; si (u> v || u = v 2% 2%!) { cout << -1 << endl; regreso; } Si (u == v && v == 0) { cout << U << endl; regreso; } Si (u == v && v = 0) { cout << 1 << endl << U << endl; regreso ; } Int a = (v - u) / 2; if ((a ^ u) == a + u) { cout << 2 << endl; cout << (u + v) / 2 << "" << un << endl; } else { cout << 3 << endl; tribunal << << U "" << un << "" << un << endl; } Firmado main () { // ios :: sync_with_stdio (falsos); t int; // scanf ( "% LLD", y t); // while (t--) resolver (); }