Вычислить пол (pow (2, n) / 10) mod 10 - сумма цифр pow (2, n)

Это тоже вопрос по математике, но яЯ хотел бы реализовать это в C ++ ... Итак, у меня есть номер в виде2^n, и я должен рассчитать сумму его цифр (в базе 10; P). Моя идея состоит в том, чтобы рассчитать его по следующей формуле:

sum = (2^n mod 10) + (floor(2^n/10) mod 10) + (floor(2^n/100) mod 10) + ...

для всех его цифр:floor(n/floor(log2(10)))

Первый член легко вычислить с помощью модульного возведения в степень, но яЯ в беде с другими. посколькуn большой, и я нея не хочу использовать мою большую целочисленную библиотеку, я не могут рассчитатьpow(2,n) без модуля. Фрагмент кода для первого семестра:

while (n--){
    temp = (temp < 1) % 10;
};
 y){
        tempx -= y;
        c++;
    };
    return (x - c*y);
};

int sumofdigs(unsigned short exp2){
    int s = 0;
    int nd = floor((exp2) * (log10(2.0))) + 1;
    int c = 0;
    while (true){
        ldb temp = 1.0;
        int expInt = floor(exp2 - c * log2((ldb)10.0));
        ldb expFrac = exp2 - c * log2((ldb)10.0) - expInt;
        while (expInt>0){
           temp = mod(temp * 2.0, 10.0 / pow(2.0, expFrac)); //modulo with non integer b:
                //floor(a*b) mod m = (floor(a mod (m/b)) * b) mod m, but can't code it
            expInt--;
        };
        ldb r = pow(2.0, expFrac);
        temp = (temp * r);
        temp = mod(temp,10.0);
        s += floor(temp);
        c++;
        if (c == nd) break;
    };
    return s;
};

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

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