Enfoque y código para la solución o (log n)
f (N) = 0 ^ 0 + 1 ^ 1 + 2 ^ 2 + 3 ^ 3 + 4 ^ 4 + ... + N ^ N.
Quiero calcularf (N) mod M)
Estas son las limitaciones.
1 ≤ N ≤ 10 ^ 91 ≤ M ≤ 10 ^ 3Aqui esta mi codigo
test=int(input())
ans = 0
for cases in range(test):
arr=[int(x) for x in input().split()]
N=arr[0]
mod=arr[1]
#ret=sum([int(y**y) for y in range(N+1)])
#ans=ret
for i in range(1,N+1):
ans = (ans + pow(i,i,mod))%mod
print (ans)
Intenté otro enfoque pero en vano. Aquí hay un código para eso
from functools import reduce
test=int(input())
answer=0
for cases in range(test):
arr=[int(x) for x in input().split()]
N=arr[0]
mod=arr[1]
answer = reduce(lambda K,N: x+pow(N,N), range(1,N+1)) % M
print(answer)