yhc12345 @ 2020-08-07 18:14:33
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
int p;
const int N=1010;
struct bign {
int d,num[N];
bign() {
memset(num,0,sizeof(num));
}
}b,ans;
bign operator *(const bign &x,const bign &y) {
bign res;
for(int i=1;i<=x.d;i++) {
for(int j=1;j<=y.d;j++) {
res.num[i+j-1]=x.num[i]*y.num[j];
}
}
for(int i=1;i<=res.d;i++) {
if(res.num[i]>9) {
res.num[i+1]=res.num[i]/10;
res.num[i]%=10;
}
}
res.d=x.d+y.d-1;
if(res.num[res.d+1]>0) {
res.d++;
}
return res;
}
int main() {
ios::sync_with_stdio(false);
scanf("%d",&p);
printf("%d\n",(int)(p*log10(2)+1));
// b.num[1]=5;
// b.d=1;
// ans.num[1]=6;
// ans.d=1;
//bign x=b*ans;
//printf("%d %d %d",x.d,x.num[1],x.num[2]);
b.num[1]=2;
b.d=1;
ans.num[1]=1;
ans.d=1;
while(p>0) {
if(p&1) {
ans=ans*b;
p--;
}
b=b*b;
p>>=1;
}
for(int i=500;i>=1;i--) {
if(i%50==0&&i<500) {
printf("\n");
}
if(ans.d<i) {
printf("0");
}
else {
printf("%d",ans.num[i]);
}
}
return 0;
}