自然杀手细胞 @ 2019-09-26 00:23:59
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<vector>
using namespace std;
int n;
int ans[1010];
int loww[1010];
int pre[1010];
void did()
{
memset(pre,0,sizeof(pre));
for(int i=1;i<=505;i++)
{
for(int j=1;j<=505;j++)
{
pre[i+j-1]+=ans[i]*loww[j];
}
}
for(int i=1;i<=505;i++)
{
pre[i+1]+=pre[i]/10;
pre[i]%=10;
}
//n--;
memcpy(ans,pre,sizeof(ans));
}
void done()
{
memset(pre,0,sizeof(pre));
for(int i=1;i<=505;i++)
{
for(int j=1;j<=505;j++)
{
pre[i+j-1]+=loww[j]*loww[i];//平方
}
}
for(int i=1;i<=505;i++)
{
pre[i+1]+=pre[i]/10;
pre[i]%=10;
}
memcpy(loww,pre,sizeof(loww));
}
void work()
{
while(n!=0)
{
if(n%2==1) did();
n/=2;
done();
}
}
int main()
{
//scanf("%d",&n);
cin>>n;
//cout<<11111<<endl;
printf("%d\n",(int)(n*log10(2)+1));
ans[1]=1;
loww[1]=2;
work();
int i;
ans[1]--;
for(i=500;i>=1;i--)
{
cout<<ans[i];
//printf("%d",ans[i]);
if(i%50==0&&i!=500) printf("\n");
}
return 0;
}
by 与我常在 @ 2019-09-26 09:06:48
老哥,相信我,用结构体重载运算符代码会优化许多
by hierophant_green @ 2019-11-14 14:07:55
相信我,用结构体重载运算符代码会优化许多