速く2のn次べき乗を求めます(Time Limit Exceededを防ぎます)


c++で書かれたコードで、2のn次べき乗(配列実装)を迅速に求める
コードは次のとおりです.
#include <iostream>
const int N = 1000;  //    ,   ,      
using namespace std;
int main(){
     
	int a[N] = {
     1};  //         1,   0;
	int n,m;
	cin>>n;   //    
	m = 1;  //   2       0      m-1
	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;   //  t>10   
}
		if(t)  
		a[m++] = 1;  //    ,       m    1,m     。
		
	}
	for(int i = m - 1;i >= 0;i--)     //            ,        m-1
	cout<<a[i];        //          
	cout<<endl;
}

ありがとうございます