¿Cómo resolvemos el siguiente problema en SPOJ utilizando aritmética modular inversa: SPOJ.com – Problema UCV2013A?

Tu idea es correcta.
La solución es N ^ 1 + N ^ 2 +… + N ^ L = N * (N ^ L – 1) / (N-1).

Calcular el numerador mod 1000000007 es fácil pero no podemos dividirlo con (N-1). Ahora, dado que 1000000007 es primo, es coprimo con (N-1) y, por lo tanto, existe el inverso de (N-1) mod 1000000007. Podemos encontrarlo con un algoritmo euclidiano extendido y multiplicarlo con N * (N ^ L – 1) para obtener la respuesta.

Puede leer el algoritmo aquí: algoritmo euclidiano extendido

Una implementación eficiente de inversa modular es la siguiente:

typedef long long ll; ll extendedEuclid(ll a, ll b, ll *x, ll *y) {
ll t, d;
if (b == 0) {
*x = 1; *y = 0; return a;
}
d = extendedEuclid(b, a % b, x, y);
t = *x; *x = *y; *y = t - (a/b)*(*y);
return d;
} ll modInverse(ll a, ll n) {
ll x, y;
extendedEuclid(a, n, &x, &y);
return (x < 0) ? (x + n) : x;
}

typedef long long ll; ll extendedEuclid(ll a, ll b, ll *x, ll *y) {
ll t, d;
if (b == 0) {
*x = 1; *y = 0; return a;
}
d = extendedEuclid(b, a % b, x, y);
t = *x; *x = *y; *y = t - (a/b)*(*y);
return d;
} ll modInverse(ll a, ll n) {
ll x, y;
extendedEuclid(a, n, &x, &y);
return (x < 0) ? (x + n) : x;
}

typedef long long ll; ll extendedEuclid(ll a, ll b, ll *x, ll *y) {
ll t, d;
if (b == 0) {
*x = 1; *y = 0; return a;
}
d = extendedEuclid(b, a % b, x, y);
t = *x; *x = *y; *y = t - (a/b)*(*y);
return d;
} ll modInverse(ll a, ll n) {
ll x, y;
extendedEuclid(a, n, &x, &y);
return (x < 0) ? (x + n) : x;
}

Otros ya lo han explicado. Solo para mencionar el origen del módulo inverso, ver El pequeño teorema de Fermat.
Básicamente para coprime ayb,
(x / a) mod b = (x * (a ^ (b-2))) mod b

More Interesting

¿Cuáles son las funciones más utilizadas en R?

¿Cuál es la complejidad temporal de un programa que calcula el número n de Fibonacci mediante la memorización?

¿Cuáles son los problemas finales más interesantes del cálculo?

¿Por qué la mayoría de las universidades enfatizan la teoría en oposición a las aplicaciones del mundo real y las habilidades prácticas para los estudiantes?

Cómo resolver la relación de recurrencia T (n + 1) = T (n) + ceil (n + 1) usando la sustitución para hacer un análisis asintótico

¿Existe alguna analogía en la vida real con el concepto de expresiones regulares?

Para los usuarios, ¿se está volviendo Facebook más valioso, útil y digno de más tiempo invertido o menos? ¿Por qué? ¿Hay alguna evidencia de Facebook de que la Ley de Metcalfe es cierta (para n usuarios, el valor de la red aumenta en nxn)?

Cómo escribir un programa en C para verificar si para cualquier triplete entero (x, y, z) y otro entero n, [matemática] n ^ x + n ^ y = n ^ z [/ matemática] ocurre para (a, b) siendo la entrada donde [matemáticas] a \ leq n \ leq b [/ matemáticas]

¿Cómo se puede determinar y mostrar la velocidad de un algoritmo (complejo) en notación Big O?

¿Hay una función que genera los primeros 41 números primos?

¿Cómo se puede encontrar el número de iteraciones requeridas para la integración usando la regla de Simpson para una precisión dada?

¿Puede una computadora de agujero negro resolver todos los problemas de NP-Complete en tiempo polinómico?

¿Dónde puedo conocer y salir con profesores que trabajan en la intersección de algoritmos de aproximación y teoría de números algebraicos?

¿Debo estudiar Matemáticas e Informática o Ingeniería Eléctrica y Electrónica?

Se nos dan probabilidades [matemáticas] P (A) = P (B) = P (C) \ geq 2/3 [/ matemáticas] y sabemos que [matemáticas] P (A \ cap B \ cap C) = 0 [/ mates]. ¿Qué podemos decir sobre [matemáticas] P (A) [/ matemáticas]?