4 votos

Alguna buena forma de calcular $\frac {\alpha ^ n - 1 } {\alpha - 1} \pmod{c}$

Probé multiplicando el inverso modular del denominador por el numerador y luego tomando el módulo $c$ pero hay problemas cuando la inversa no existe.

Entonces, ¿hay una buena manera de resolver este problema.

Restricciones $$ 1 \le \alpha \le 1e9 $$ $c$ es un primo $$ 1 \le n \le 1e9 $$

1 votos

Si $c$ divide $\alpha-1$ con multiplicidad $k$ se puede calcular $\alpha^n-1\pmod{p^{k+1}}$ y dividir por $\alpha-1$ .

2voto

algui91 Puntos 156

Establecer $S_0:=1$ y luego recursivamente $S_k:=\alpha S_{k-1}+1 \pmod c$ para todos $k=1,\dotsc,n-1$ . El último valor $S_{n-1}$ es lo que buscas.

0 votos

Es demasiado lento para ser calculado linealmente con n ~ 1e9

0 votos

Una forma mejor sería $ S_k := S_{\frac {k}{2}} + \alpha ^ {k / 2} S_{k - \frac{k}{2}} $

0 votos

Claro, siempre que la duración sea un problema. (Por tu pregunta he entendido que te enfrentas sobre todo a la situación en la que el denominador no es invertible).

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