Сумма серий: 1 ^ 1 + 2 ^ 2 + 3 ^ 3 +… + n ^ n (мод м)

Может ли кто-нибудь дать мне представление об эффективном алгоритме для больших n (скажем, 10 ^ 10), чтобы найти сумму вышеуказанных рядов?

Mycode становится убитым для n = 100000 и m = 200000

#include<stdio.h>

int main() {
    int n,m,i,j,sum,t;
    scanf("%d%d",&n,&m);
    sum=0;
    for(i=1;i<=n;i++) {
        t=1;
        for(j=1;j<=i;j++)
            t=((long long)t*i)%m;
        sum=(sum+t)%m;
    }
    printf("%d\n",sum);

}

Ответы на вопрос(6)

Ваш ответ на вопрос