matriz: convierte el índice de una matriz dimensional en un índice vectorial de una matriz multidimensional

Será una pregunta larga, por favor, respira hondo antes de leer.

Quiero entender cuál sería el algoritmo más rápido para convertir el índice de una matriz dimensional en un índice vectorial de una matriz multidimensional.

Continuemos con un ejemplo para entender por qué lo necesito:

Tengo una matriz bidimensional: Array [i1] [i2]

i1 se ejecuta desde i1_b = 0 a i1_e = 2

i2 se ejecuta desde i2_b = 0 a i2_e = 1

Así que esta matriz se genera en la línea de archivos por línea:

Array [0] [0]

Array [0] [1]

Array [0] [2]

Array [1] [0]

Array [1] [1]

Array [1] [2]

Ahora leo el archivo línea por línea e índice k es el número de la línea que se está leyendo en último lugar.

Leí la primera línea que es Array [0] [0] yk = 0

Leí la segunda línea que es Array [0] [1] yk = 1

...

Uno puede notar que k se ejecutará de k_b = 0 a k_e = 5 y

k = 0 corresponderá a i1 = 0, i2 = 0

k = 1 corresponderá a i1 = 0, i2 = 1

...

Problema: ¿Entonces mi problema es cómo convertir k en i1 e i2 de la manera más rápida posible? (No lo necesito mientras leo el archivo, pero más adelante en mi programa)

En este ejemplo, una de las soluciones sería

i1 = k / (i1_e - i1_b + 1);

i2 = k% (i1_e - i1_b + 1);

Pregunta 1: ¿Es la solución más rápida posible en términos de ciclos y tiempo de computadora?

DE ACUERDO. Pregunta 2: ¿Cómo podemos generalizar este algoritmo a matrices multidimensionales?

Array [i1] [i2] [i3] [i4]

i1 = k / (i1_e - i1_b + 1);

i2 = k% (i1_e - i1_b + 1);

i3 = i2 / (i1_e - i1_b + 1);

i4 = i2% (i1_e - i1_b + 1);

Pregunta 3: ¿Es la forma más rápida de hacerlo?

Pregunta 4: la pregunta relacionada sería ¿cuál es la latencia para la división modular, la división de enteros, la suma de enteros y la multiplicación de enteros? Si estos números dependen de la arquitectura, por favor, hágamelo saber.

¡Gracias por adelantado!

PD Puede ser más fácil para alguien pensar en este problema como el algoritmo más rápido para convertir segundos en días-horas-minutos-segundos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta