利用公式a[i] = 2^i - 1.ios
#include<iostream> #include<string.h> using namespace std; struct num{ int a[1000]; int s=1; }; void Mul(num &m){ for(int j=0; j<m.s; j++){ m.a[j] *=2; } for(int j=0; j<m.s; j++){ m.a[j+1] += m.a[j]/10; m.a[j] %= 10; } while(m.a[m.s] != 0){ m.a[m.s+1] += m.a[m.s]/10; m.a[m.s] %= 10; m.s++; } } int main(){ int m; cin>>m; num p; memset(p.a,0,sizeof(p.a)); p.a[0]=1; for(int i=0; i<m; i++){ Mul(p); } for(int i=0; i<p.s; i++){ if(p.a[i] != 0){ p.a[i]--; break; } p.a[i] = 9; } Mul(p); for(int i = p.s-1; i>=0; i--){ cout<<p.a[i]; } return 0; }