我想解决一个练习.它说我需要输出2个数字的最后数字,这个数字是2 n
(2 ^ n)的幂.
但输入是n=1000000
.
代码使用较低的值,但当输入为1 000 000时,数字太大.
我的代码:
#include#include #include using namespace std; int main() { unsigned long long n; cin >> n; unsigned long long sk = pow(2, n); if (sk < 1000) cout << sk; else { string ats = to_string(sk); // converting the number to string // so I could output 3 last digits // probably not the best solution // for this exercise n = ats.length(); for (unsigned long long i = n - 3; i < n; i++) { cout << ats[i]; } } return 0; }
谢谢您的帮助.
尝试类似的东西:
将结果初始化为1
在从1到n的循环中:
结果*= 2
结果%= 1000
这是因为最后3位的结果不依赖于更大的数字