四个WA,六个TLE,真就“万紫千红”呗! 真搞不懂我代码错哪了,求助大佬
#include<bits/stdc++.h>
using namespace std;
string num[10]={"0","1","2","3","4","5","6","7","8","9"};
string add(string a,string b){
int x[100000]={0},y[100000]={0},sum[200000]={0};
string s="";
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
for(int i=0;i<a.length();i++){
x[i]=a[i]-'0';
}
for(int i=0;i<b.length();i++){
y[i]=b[i]-'0';
}
int len=max(a.length(),b.length());
int flag=0;
for(int i=0;i<len;i++){
sum[i]=x[i]+y[i]+flag;
if(sum[i]>=10){
sum[i]-=10;
flag=1;
}else{
flag=0;
}
}
if(flag==1){
s+="1";
}
for(int i=len-1;i>=0;i--){
s+=num[sum[i]];
}
return s;
}
string sub(string aa){
string aaa=aa;
if(aa[aa.length()-1]>='1'){
aaa[aa.length()-1]--;
}else{
aaa[aa.length()-1]+=9;
aaa[aa.length()-2]--;
}
return aaa;
}
int main(){
int p;
cin>>p;
string n="1";
for(int i=1;i<=p;i++){
n=add(n,n);
}
cout<<sub(n).length()<<endl;
for(int i=500;i>sub(n).length();i--){
cout<<"0";
}
cout<<sub(n);
return 0;
}