如何在C++中计算2^100的十位值?

cou*_*ndl 0 c++ math integer-overflow

如何在C++中计算2^100的十位值?

我尝试过这个;

#include <cmath>
#include <iostream>

using namespace std;

int main(){
    int answer;
    answer = (unsigned long long int)pow(2, 100) % 100 / 10; //zero
    cout << answer << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但由于溢出而打印出0。

Python 使用此代码正确打印答案;

print(2 ** 100 % 100 // 10)
Run Code Online (Sandbox Code Playgroud)

但是我如何在C++中计算它呢?

Mat*_*ans 5

只需两步即可完成:

int x = (1<<25)%100;
x = (x*x*x*x)%100;
x = x/10;
Run Code Online (Sandbox Code Playgroud)