algorithm - tabla - ¿Cómo calcular el valor del dígito i-ésimo en una representación k-aria de un número?
valor posicional de los numeros ejemplos (2)
Algo como:
(n / (k ** i)) % k
(donde **
es el operador de exponenciación y /
es división entera (truncamiento)) debería hacerlo. Use (i-1)
si desea numerar los dígitos de la derecha comenzando con 1 en lugar de comenzar con 0.
¿Qué es un buen algoritmo para calcular el valor del i -ésimo dígito en una representación k -ary de un número n ?
Ejemplo:
Para la función bitval(int k, int i, int n)
:
bitval(5, 4, 9730) = 2
porque en una representación 5-aria (quinaria) del número 9730 (que es 302410), el 4º dígito (de la derecha) es 2.
El algoritmo ingenuo es el siguiente:
- Calcule la representación kary de
n
. Esto se puede lograr con divisiones repetidas y operaciones de módulo. - Devuelve el
i
-ésimo dígito en esta representación.