Abordagem e código para a solução o (log n)
f (N) = 0 ^ 0 + 1 ^ 1 + 2 ^ 2 + 3 ^ 3 + 4 ^ 4 + ... + N ^ N.
Eu quero calcular (f (N) mod M)
Essas são as restrições.
1 ≤ N ≤ 10 ^ 91 ≤ M ≤ 10 ^ 3Aqui está o meu código
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)
Eu tentei outra abordagem, mas em vão. Aqui está o código para isso
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)