#pragma GCC optmize(2,3,"Ofast","inline")
#include<bits/stdc++.h>
#define int long long
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
#define abs(a) ((a) > 0 ? (a) : 0 - (a))
#define in(a,b,c) ((a) >= (b) && (a) <= (c))
#define isint(a) (floor(a) == a)
#define endl '\n'
using namespace std;
#define mod 1000000007
int n,k;
struct large_int{
int a[10000];
void clear(){
memset(a,0,sizeof(a));
}
void change(string s){
a[0] = s.size();
for(int i = s.size();i >= 1;i--)a[i] = s[s.size() - i] - '0';
}
void print(){
for(int i = a[0];i >= 1;i--)cout << a[i];
}
};
bool operator >(large_int a,large_int b){
if(a.a[0] != b.a[0])return a.a[0] > b.a[0];
for(int i = a.a[0];i >= 1;i--){
if(a.a[i] != b.a[i])return a.a[i] > b.a[i];
}
return false;
}
bool operator >=(large_int a,large_int b){
if(a.a[0] != b.a[0])return a.a[0] > b.a[0];
for(int i = a.a[0];i >= 1;i--){
if(a.a[i] != b.a[i])return a.a[i] > b.a[i];
}
return true;
}
bool operator <(large_int a,large_int b){
if(a.a[0] != b.a[0])return a.a[0] < b.a[0];
for(int i = a.a[0];i >= 1;i--){
if(a.a[i] != b.a[i])return a.a[i] < b.a[i];
}
return false;
}
bool operator <=(large_int a,large_int b){
if(a.a[0] != b.a[0])return a.a[0] <= b.a[0];
for(int i = a.a[0];i >= 1;i--){
if(a.a[i] != b.a[i])return a.a[i] <= b.a[i];
}
return true;
}
bool operator ==(large_int a,large_int b){
for(int i = 0;i <= max(a.a[0],b.a[0]);i++){
if(a.a[i] != b.a[i])return false;
}
return true;
}
bool operator !=(large_int a,large_int b){
return !(a == b);
}
large_int operator +(large_int a,large_int b){
large_int c;
c.a[0] = max(a.a[0],b.a[0]) + 1;
int jw = 0;
for(int i = 1;i <= c.a[0];i++){
c.a[i] = (a.a[i] + b.a[i] + jw) % 10;
jw = (a.a[i] + b.a[i] + jw) / 10;
}
while(c.a[c.a[0]] == 0)c.a[0]--;
return c;
}
large_int operator -(large_int a,large_int b){
int tw = 0;
large_int c;
for(int i = 1; i <= max(a.a[0],b.a[0]) + 1; i++) {
c.a[i] = (a.a[i] - b.a[i] - tw + 10) % 10;
tw = a.a[i] - b.a[i] - tw < 0;
}
c.a[0] = max(a.a[0],b.a[0]) + 1;
while(!c.a[c.a[0]] && c.a[0] > 1)c.a[0]--;
return c;
}
large_int operator *(large_int a,large_int b){
large_int c;
for(int i = 1;i <= a.a[0];i++){
for(int j = 1;j <= b.a[0];j++){
c.a[i + j - 1] += (a.a[i] * b.a[j]);
}
}
for(int i = 1;i < a.a[0] + b.a[0];i++){
if(c.a[i] > 9){
c.a[i + 1] += c.a[i] / 10;
c.a[i] %= 10;
}
}
c.a[0] = a.a[0] + b.a[0];
while(c.a[c.a[0]] == 0 && c.a[0] > 1)c.a[0]--;
return c;
}
large_int operator /(large_int a,large_int b){
large_int tmp,c;
c.clear();
c.a[0] = a.a[0] - b.a[0] + 1;
for(int i = c.a[0];i > 0;i--){
memset(tmp.a,0,sizeof(tmp.a));
for(int j = 1;j <= b.a[0];j++){
tmp.a[i + j - 1] = b.a[i];
}
tmp.a[0] = b.a[0] + i - 1;
while(a >= tmp){
a = a - tmp;
c.a[i]++;
}
}
while(c.a[c.a[0]] == 0 && c.a[0] > 0) c.a[0]--;
return c;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int x;
cin >> x;
large_int a,tmp,tmp1;
a.change("1"),tmp.change("2"),tmp1.change("2");
for(int i = 1;i <= x + 2;i++){
a = a * tmp;
}
(a - tmp1).print();
}
为什么这代码求出的是3n−2,而不是2n−2