Juego Fetch Stone HDU-1527 Juego Wizov

 

Hay dos montones de piedras, el número es arbitrario y puede ser diferente. Al comienzo del juego, dos personas se turnan para obtener las piedras. El juego estipula que hay dos formas diferentes de tomarlo cada vez: una es que se puede tomar cualquier cantidad de piedras de cualquier pila; la otra es que se puede tomar la misma cantidad de piedras de ambas pilas al mismo tiempo. Al final, el que terminó todas las piedras fue el ganador. Ahora da el número inicial de dos pilas de piedras. Si es tu turno de tomar primero, asume que ambas partes toman la mejor estrategia y pregunta si eres el ganador o el perdedor al final.

La entrada de entrada contiene varias filas, que representan la situación inicial de varios tipos de piedras. Cada fila contiene dos enteros no negativos a y b, que representan el número de dos pilas de piedras, ni a ni b son mayores que 1,000,000,000. También hay varias líneas correspondientes a la salida de Salida, cada línea contiene un número 1 o 0, si al final es el ganador, es 1, de lo contrario es 0. Entrada de muestra

2 1 
8 4 
4 7

Salida de muestra

0 
1 
0 
Juego de Wythoff: hay dos pilas de varios elementos, y dos personas se turnan para tomar al menos una de las pilas o tomar la misma cantidad de elementos de las dos pilas al mismo tiempo. Solo aquellos que ganen la luz ganarán.
Esta situación es bastante complicada. Usamos (a [k], b [k]) (a [k] ≤ b [k], k = 0, 1, 2, ..., n) para representar el número de dos pilas de elementos y llamarlo la situación, Si A se enfrenta (0, 0), entonces A ya ha perdido. Esta situación se llama situación singular. Las primeras situaciones extrañas son: (0,0), (1,2), (3,5), (4,7), (6,10), (8,13), (9,15), ( 11, 18), (12, 20). (Nota: k representa el número de la situación extraña, la primera situación extraña k = 0)
Se puede ver que a [0] = b [0] = 0, a [k] es el número natural más pequeño que no ha aparecido antes, y b [k] = a [k] + k.

La naturaleza de la extraña situación.

1) Cualquier número natural está contenido en una y solo una situación singular.
Como a [k] es el número natural más pequeño que no ha aparecido antes, hay a [k]> a [k-1] y b [k] = a [k] + k> a [k-1] + k > a [k-1] + k-1 = b [k-1]> a [k-1]. Entonces la propiedad 1 es válida.
2) Cualquier operación puede cambiar la situación singular en una situación no singular.
De hecho, si solo se cambia un componente de la situación singular (a [k], b [k]), el otro componente no puede estar en otras situaciones singulares, por lo que debe ser una situación no singular. Si los dos componentes de (a [k], b [k]) se reducen al mismo tiempo, dado que la diferencia no cambia y no puede ser la diferencia de otras situaciones singulares, también es una situación no singular.
3) Con los métodos apropiados, las situaciones no singulares pueden convertirse en situaciones singulares.
Supongamos que la situación enfrentada es (a, b), si b = a, entonces se toma un objeto de dos pilas al mismo tiempo, y se convierte en una situación singular (0, 0); si a = a [k], b> b [k] Luego, tomar objetos b-b [k], se convierte en una situación extraña; si a = a [k], b <b [k], entonces toma aa [ba] de dos pilas al mismo tiempo ( Nota: aquí ba es el subíndice de a, no a * (ba)) El objeto se convierte en una situación singular (a [ba], b-a + a [ba]); si a> a [k], b = a [k] + k luego retire el exceso a-a [k] de la primera pila; si a <a [k], b = b [k], hay dos casos, el primero, a = a [n] (n <k) simplemente toma b-b [n] del segundo montón; el segundo tipo, a = b [n] (n <k) toma b-del segundo montón una [n] es suficiente.

Conclusión

Si ambos toman las medidas correctas, entonces, ante situaciones no singulares, el ganador ganará primero; de lo contrario, el ganador ganará más tarde.
Entonces, para cualquier situación (a, b), ¿cómo juzgar si es una situación extraña? Tenemos la siguiente fórmula:
ak = [k (1 + √5) / 2], bk = ak + k (k = 0,1,2, ... n los corchetes indican la función de redondeo)
Lo maravilloso es que el número de la sección dorada (1 + √5) / 2 = 1.618 ... Por lo tanto, el rectángulo compuesto por ak y bk es aproximadamente un rectángulo dorado, porque 2 / (1 + √5) = (√5- 1) / 2, primero puede encontrar j = [a (√5-1) / 2], si a = [j (1 + √5) / 2], luego a = aj, bj = aj + j, si No es igual, entonces a = aj + 1, b = aj + j + 1, si no, entonces no es una situación extraña. Luego proceda de acuerdo con las reglas anteriores, y definitivamente se encontrará con una situación extraña.
#include <bits / stdc ++. h>
 usando el  espacio de nombres std; 
typedef largo  largo ll;
const ll inf = 4e18 + 10 ;
const  int mod = 1000000007 ;
const  int mx = 1e6; // verifica los límites, dummy 
typedef pair < int , int > pa;
const  doble PI = acos (- 1 ); 
ll mcd (ll a, ll b) { return b? mcd (b, a% b): a; }
 #define swa (a, b) a ^ = b ^ = a ^ = b
 #definere (i, a, b) para (int i = (a), _ = (b); i <_; i ++)
 #define rb (i, a, b) for (int i = (b), _ = (a); i> = _; i--)
 #define clr (a) memset (a, 0, sizeof (a))
 #define lowbit (x) ((x) & (x-1))
 #define mkp make_pair
 void sc ( int & x) {scanf ( " % d " , & x); } void sc (int64_t & x) {scanf ( " % lld " , & x); } void sc ( doble & x) {scanf ( " % lf " , & x); } void sc ( char & x) {scanf ( " % c " , &X); } nulosc ( char * x) {scanf ( " % s " , x); }
 int main () 
{ 
    ios :: sync_with_stdio ( false ); cin.tie ( 0 ); cout.tie ( 0 );
    int n, m;
    oro doble = ( 1 + sqrt ( 5 )) / 2 ; // 黄金 分割
    while (cin >> n >> m) 
    { 
        int a = min (n, m), b = max (n, m);
        doble k = ( doble ) (b - a);
        int test = ( int) (k * oro);
        if (prueba == a) cout << 0 << endl;
        sino cout << 1 << endl; 
    } 
    devuelve  0 ; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/xxxsans/p/12729417.html
Recomendado
Clasificación