fill(arr, arr + n, 要填入的内容);
copy(a.begin(),a.begin()+3,b.begin()+4);将a[0]到a[2]复制到b[5]到b[7] 并且覆盖掉原来的数据 (主要用于容器之间)
#include<bits/stdc++.h>
using namespace std;
int a[510],b[510],c[510];
int n=510;
void m(int a[],int b[])
{
fill(c,c+n,0);
for(int i=1;i<=500;i++)
{
for(int j=1;j<=500;j++)
{
if(i+j-1<=500)c[i+j-1]+=a[i]*b[j];
}
}
for(int i=1;i<=500;i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
copy(c,c+n,a);
}
void find(int x)
{
fill(a,a+n,0);
fill(b,b+n,0);
a[1]=1;
b[1]=2;
while(x)
{
if(x%2==1)m(a,b);
m(b,b);
x/=2;
}
a[1]--;
}
int main()
{
int p;
cin>>p;
int ans=(p*log10(2))+1;
cout<<ans<<endl;
find(p);
int cnt=0;
for(int i=500;i>=1;i--)
{
cnt++;
cout<<a[i];
if(cnt%50==0)cout<<endl;
}
}