好像是第一行位数出问题了
#include<bits/stdc++.h>
using namespace std;
int n;
string ans="3",yy;
string mul(string x,string y)
{
string z;
int lx=x.size(),ly=y.size(),lz=ly+lx,xx[10000],yy[10000],zz[10000]={0};
for(int i=1;i<=lx;i++)
xx[i]=(int)(x[lx-i]-'0');
for(int i=1;i<=ly;i++)
yy[i]=(int)(y[ly-i]-'0');
for(int i=1;i<=lx;i++)
for(int j=1;j<=ly;j++)
zz[i+j-1]+=xx[i]*yy[j];
int o=0;
for(int i=1;i<=lz;i++)
{
zz[i]+=o;
o=zz[i]/10;
zz[i]%=10;
}
bool flag=0;
for(int i=lz;i>=1;i--)
{
if(zz[i]) flag=1;
if(flag||i==1) z+=zz[i]+'0';
}
return z;
}
int main()
{
cin>>n;
int k=n/3,y=n%3;
if(y==1)
{
k--;
y=4;
}
yy=yy+char(y+'0');
for(int i=2;i<=k;i++)
ans=mul(ans,"3");
ans=mul(ans,yy);
long long l=ans.length();
cout<<l<<endl;
int ll=ans.length();
if(l>100) ll=100;
for(int i=0;i<ll;i++)
cout<<ans[i];
return 0;
}