#include
#include
#include
using namespace std;
int main() {
int n;
cin >> n; // 输入一个整数n
int arr[100];
memset(arr, -1, sizeof(arr)); // 将数组arr的元素初始化为-1,sizeof(arr)表示arr数组的字节大小
arr[0] = 1; // 数组第一个元素赋值为1
int j;
for (int i = 0; i < n; i++) {
j = 0;
// 将数组每个元素乘以2,直到遇到-1为止
while (arr[j] != -1) {
arr[j++] *= 2;
}
j = 0;
// 处理进位
while (arr[j] != -1) {
// 如果当前数字大于等于10,并且下一位是-1(即没有下一位)
// 则在下一位填充0,并将当前位的值除以10加到下一位上
if (arr[j] >= 10 && arr[j + 1] == -1) {
arr[j + 1] = 0;
}
arr[j + 1] += arr[j] / 10;
arr[j] %= 10;
j++;
}
}
// 输出结果
for (int i = j - 1; i >= 0; i--) {
cout << arr[i];
}
return 0;
}
该程序的逻辑如下: