25 votos

$n los últimos dígitos $ de $un ^ b$

El año pasado vine acoss el siguiente problema en un concurso de matemáticas

¿Cuáles son los últimos $2$ dígitos de $2012^{2012}$? $\ \ \ \ \ $(Ans: 56)

Me encontré con los dos últimos dígitos utilizando la técnica estándar de la participación de algunos de aritmética modular.

Otro estudiante se me acercó con una muy ingeniosa técnica que no dependen de la aritmética modular, sino en logaritmos y la función del suelo (calculadoras científicas estaban permitidos, pero no las calculadoras gráficas o computer algebra systems). He olvidado los detalles de esta técnica, que era en realidad una función que podría ser escrito en una sola línea, pero recordar que es fácilmente generalizado a dar los últimos $n$ dígitos de cualquier número de la forma $a^b$ sin causar errores de desbordamiento en poco calculadoras científicas, incluso con considerable de $a$ y $b$.

He buscado en stackexchange y la web para obtener información sobre esta técnica, pero no encontré nada. Pasé una buena cantidad de tiempo a pensar sobre el problema, pero no hizo ningún progreso. Alguien ha visto a esta técnica? Si es así, por favor me ayudan a reproducir la función que él usó.

Estoy especialmente interesado en la técnica descrita anteriormente; sin ningún tipo de aritmética modular, Teorema del Resto Chino, Euler Generalización, que se Repite Cuadrado, etc.

4voto

casperOne Puntos 49736

Vamos a empezar con algunos aritmética modular. Sé que usted no quiere una respuesta de forma explícita el uso de cualquier modular engaño, pero a menudo una respuesta puede ocultar el medio que utiliza para conseguirlo.

El objetivo es calcular $a^b\bmod 10^n$, que como se ha señalado es igual a $a^b-10^n\left\lfloor^b10^{-n}\right\rfloor$, a pesar de que la fórmula es claramente inútil si $a$ o, especialmente, $b$ son incluso moderadamente grande. La identidad $x\bmod y=x-y\lfloor x/y\rfloor$ vendrá en la mano aunque. Vamos $m=10^n$ ser la base para el mod de la operación.

La forma en que se puede proceder es mediante la reducción de $a$ y $b$ tanto como sea posible, usando aritmética modular. La más fácil es $un$: desde la aritmética modular conserva los productos, $a^b\equiv (a\bmod m)^b$. Por lo tanto, sólo necesitamos considerar $a\le m$.

El más útil de la fórmula en este contexto es el teorema de Euler $a^{\phi(m)}\equiv 1\pmod m$, donde $\phi(m)$ es la totient función. En general, $\phi(m)$ es bastante difícil de calcular, pero por un golpe de suerte nos toca a saber $m=10^n$, entonces sabemos que la descomposición en factores primos, y por la fórmula

$$\phi(m)=\phi(p_1^{e_1}\dots p_n^{e_n})=m\left(1-\frac1p_1\right)\dots\left(1-\frac1p_n\right),$$

nos encontramos con que $\phi(10^n)=10^n(1-1/2)(1-1/5)=4\cdot 10^{n-1}$.

Por desgracia, el teorema de Euler viene con la advertencia de que $a$ y $m$ debe ser coprime, por lo que no funciona en todos los casos como usted desea. Un mejor resultado del teorema de Carmichael, que es el mismo que el de Euler, pero con una menor función del exponente: $a^{\lambda(m)}\equiv 1\pmod m$, donde $\lambda(10^n)=2\cdot 10^{n-1}$. Además, $a^{\lambda(m)+b}\equiv a^b\pmod m$ para cualquier entero $a<m$ y $b\ge k$, donde $k$ es el mayor exponente en la factorización prima de $a$. Ahora queremos una fórmula general que no necesita ningún tipo de factorización, así que vamos-límite superior $k$. El peor de los casos es si $a$ es una de alta potencia de 2 $$ menos de $10^n$. En este caso, $a=2^k<2^{n\log_2 10}=10^n$, entonces $k<n\log_2 10$. (Tenga en cuenta que $n\log_2 10$ no es un entero, pero con nuestro piso truco para el cálculo de $\bmod$ esto no será un problema. Es bueno el uso de $\lfloor n\log_2 10\rfloor$ en su lugar.)

Estamos listos para poner todo junto ahora. Tenemos $a^b\bmod m=c^d\bmod m$ mientras $a\bmod m=c\bmod m$ y $b\bmod\lambda(m)=d\bmod\lambda(m)$ y $b,d\ge n\log_2 10$. (Estoy suponiendo que $a$ y $b$ son "grandes", y estamos tratando de reducir a proporciones razonables. Si $b<n\log_2 10$, a continuación, sólo tiene que enchufar el maldita cosa en su calculadora.) Por lo tanto, las decisiones óptimas que satisfagan los criterios son $$c=a\bmod 10^n=a-10^n\left\lfloor a10^{-n}\right\rfloor,\quad\rm y$$ $$\begin{align} d&=((b-n\log_2 10)\bmod2\cdot 10^{n-1})+n\log_2 10 \\ &=b-2\cdot 10^{n-1}\left\lfloor\frac{b-n\log_2 10}{2\cdot 10^{n-1}}\right\rfloor, \end{align}$$

y terminamos por el taponamiento de los a $a^b\bmod 10^n=c^d-\left\lfloor c^d10^{-n}\right\rfloor$.


Para el caso en que el OP, $a=b=2012$ y $n=2$. Entonces $c=12$, $\phi(10^n)=40$, $\lambda(10^n)=20$, $n\log_2 10=6.64\dots$, $\lfloor n\log_2 10\rfloor=6$ y $d=12$, entonces $$2012^{2012}\bmod 100=12^{12}\bmod 100=8916100448256\bmod 100=56.$$

Los números todavía son un poco grandes, pero sin duda dentro de la esfera de las calculadoras científicas. El problema es, por supuesto, mucho más manejable si se divide el exponente en la mitad. Este es el paso uno de la exponenciación por repetir la cuadratura (pero yo reclamo a ser el de evitar la restricción en el OP, ya que no estoy abogando por todo el proceso iterativo ;) ). Mejor aún, podemos dividir el exponente en $q$ trozos iguales (más en la elección de $q$ en un poco). La forma en que se va es (después de haber reducido $a$ y $b$ a $c$ y $d$ as arriba) para calcular $c^{qr+s}\bmod m=(c^r\bmod m)^cc^s\bmod m$, donde $d=qr+s$ es el cociente y el resto de $d$ en la división por $q$, es decir, $r=\lfloor d/q\rfloor$ y $s=d\bmod q$. Ahora el resultado final es

$$a^b\bmod 10^n=c^{\lfloor d/q\rfloor}\bmod 10^n)^cc^{d\:\bmod\:q}\bmod 10^n,$$ donde, como antes de que $x\bmod de$ y es la abreviatura de $x-y\lfloor x/y\rfloor$. El uso de esta fórmula en lugar de eso, los números originales, y la elección de $q=3$, obtenemos $$\begin{align} a^b\bmod 10^n&=(12^4\bmod 100)^312^0\bmod 100\\ Y=(20736\bmod 100)^312^0\bmod 100=46656\bmod 100=56,\end{align}$$ el cual está en el rango de 8 dígitos calculadora de bolsillo.

Pero, ¿de dónde $p$? Los dos grandes números en nuestro cálculo es de $c^{\lfloor d/q\rfloor}=20736=h$ y $(h\bmod 100)^{d\:\bmod\:q}=46656$. El más grande $q$ es, el más pequeño es el primer número y el más grande de la segunda. En un áspero heurística, tanto $c$ y $h\bmod 100$ son grandes números mod $100$, por lo que debe ser aproximadamente de 50, si yo pretendo que los números están uniformemente distribuidos. (No leer demasiado en esta estimación.) Por lo tanto una buena opción de $p$ sería aproximadamente de igualar los exponentes, es decir, $q=\lfloor\sqrt d\rfloor$ (que es igual a $3$ en nuestro ejemplo).

2voto

fattire Puntos 716

¿Está seguro que el problema le preguntó sobre el último pocas cifras? Si era primer pocos dígitos, la solución de una línea utilizando logaritmos le suena mucho más probable: $$ g (a, b, n) = \left\lfloor 10 ^ {b\log_ {10} a - \lfloor b\log_ {10} a\rfloor + 1 + n} \right\rfloor$$

Por supuesto, esto es más que una versión disfrazada de $\left\lfloor \frac{a^b}{10^{k-n}}\right\rfloor$, donde $k$ es el número de dígitos de $a ^ b$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X