Модульное возведение в норму для большого мода в C ++

Это код, который я использую для расчета(n^p)%mod, К сожалению, это не подходит для больших значенийmod (в моем случаеmod = 10000000000ULL) когда я звонюmain() метод. Любая идея; Зачем?

ull powMod(ull n, ull p, ull mod) {
    ull ans = 1;
    n = n%mod;
    while(p) {
        if(p%2 == 1) {
            ans = (ans*n)%mod;
        }
        n = (n*n)%mod;
        p /= 2;
    }
    return ans;
}

Вот,ull является typedef дляunsigned long long.

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

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