Hashing

Cuando trabajamos con colecciones de elementos, como una lista de cadenas o una lista de tuplas, buscar un elemento o responder consultas del tipo “¿Está el elemento X en nuestra colección?” puede ser muy costoso computacionalmente. Sin embargo, comparar números es muy rápido, y nuestras computadoras están especialmente diseñadas para hacerlo de manera muy eficaz (a diferencia de comparar cadenas o tuplas). Por lo tanto, si podemos asignar nuestros datos a un valor numérico, algunas operaciones, como encontrarlos o verificar si están en la colección, se vuelven mucho más ágiles.
La técnica que consiste en mapear datos de tamaño arbitrario a datos de tamaño fijo se llama hashing. El número resultante (hash) funciona como un identificador único de los datos originales. Normalmente contamos con una función hash que puede mapear los datos iniciales a un valor de tamaño fijo (como un número).
Por ejemplo, Python cuenta con una función incorporada llamada hash, que puede transformar cualquier objeto immutable en un número que, por lo general, cae dentro del rango . Es importante notar que solo puede trabajar con objetos inmutables. Por ello, si tratamos de hacer hash de una lista o un diccionario (objetos mutables a los que se les pueden agregar o quitar elementos), obtendremos un error:
print(hash(123))               # 123
print(hash('Anna'))            # 2573300035916889866
print(hash('Bob'))             # -2781086332262035333
print(hash((2, 'Simon')))      # -6551767300073204554
print(hash([1, 2]))            # TypeError: unhashable type: 'list'

Desafío: Hashear un par de enteros

Implemos una función de hash personalizada llamada h. Esta función recibirá un par de números enteros y deberá devolver su valor de hash. La función h se define como:
Esto garantiza que el valor de hash siempre permanezca en el rango [0; 5077).

Input

La única línea de la entrada contiene dos números a y b ( ≤ a, b ≤ ).

Output

El programa debe imprimir el hash del par (a, b).

Ejemplos

Entrada
Salida
4 5
2916
23452 5432
3751
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue