计算2的N次方。N <= 10000
#include <iostream>
using namespace std;
//2的10000次幂大概有3001位
const int N = 3010;
int main()
{
//数组里只有1位是1,其他全是0,{1,0,0,0,...}。倒过来看数字是0000...1。
int a[N] = {1};
int n;
cin >> n;
//当前的位数
int m = 1;
//2的几次幂
for (int i = 0; i < n; i++)
{
//进位,一开始没有进位
int t = 0;
//对于每一位
for (int j = 0; j < m; j++)
{
t += a[j] * 2;
a[j] = t % 10;
t /= 10;
}
//当前位数算完后,如果要进位,因为这道题每次乘2,最大进位为1
// if (t) 指如果t不等于0,这道题t只为1或0,这里指t==1时
if (t) a[m++] = 1;
}
//倒着输出
for (int i = m - 1; i >= 0; i--)
{
cout << a[i];
}
cout << endl;
return 0;
}