2011-08-09 18 views
6

¿Qué es un buen algoritmo para calcular el valor de la i-ésimo dígito en una representación ary de un número n k?¿Cómo calcular el valor del dígito i-ésimo en una representación k-aria de un número?

Ejemplo:

Para la función bitval(int k, int i, int n):

bitval(5, 4, 9730) = 2 porque en una representación 5-ary (quinario) del número 9730 (que es 302 410) el cuarto dígito (desde la derecha) es 2.

+0

¿Qué es "t" en el título de su pregunta? –

+0

@Oli: Lo siento, acaba de pulsar 'enviar' demasiado pronto ... – Frank

+0

@Kerrek: No entiendo tu punto. 'n' es un número, p. 9730, no una representación de cadena. Sin embargo, tiene un punto si realmente quiere decir que la función debe _return_ una cadena, p. "f" si k = 16 (representación hexadecimal). – Frank

Respuesta

5

Algo así como:

(n/(k ** i)) % k 

(donde ** es el operador de exponenciación y 012.es una división entera (truncada) debería hacerlo. (i-1) utilizar si desea numerar los dígitos de la derecha empezando por 1 en lugar de comenzar con 0.

-2

El algoritmo ingenuo es el siguiente:

  1. Calcular el k representación ary de n. Esto se puede lograr con divisiones repetidas y operaciones de módulo.
  2. Devuelva i-décimo dígito en esta representación.
Cuestiones relacionadas