ljh6jz @ 2020-08-09 15:24:13
#include<cstdio>
#include<cmath>
using namespace std;
const int N=1001000;
int a[N],n,len;
int read();
void pre(){
for(int s=2;;++s){
for(int i=1;i<=a[0];++i){
a[i]*=2;
}
for(int i=1;i<=a[0];++i){
if(a[i]>=10){
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
while(a[a[0]+1]>0){
if(a[0]>500){
break;
}
a[0]++;
}
if(a[0]>500)return;
}
}
int main(){
n=read();
a[0]=1;
a[1]=1;
printf("%d\n",(int)(len=log10(2)*n+1));
if(len>500){
pre();
n-=500;
while(n>20){
for(int i=1;i<=a[0]&&i<=500;++i){
a[i]*=1048576;
}
for(int i=1;i<=a[0]&&i<=500;++i){
if(a[i]>=10){
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
while(a[a[0]+1]>0){
if(a[0]>500){
break;
}
a[0]++;
}
n-=20;
}
while(n>0){
for(int i=1;i<=a[0];++i){
a[i]*=2;
}
for(int i=1;i<=a[0];++i){
if(a[i]>=10){
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
while(a[a[0]+1]>0){
if(a[0]>=500){
break;
}
a[0]++;
}
n--;
}
a[1]--;
// printf("%d\n",a[0]);
for(int i=10;i>=1;--i){
for(int j=0;j<50;++j){
printf("%d",a[i*50-j]);
}
printf("\n");
}
}
else{
for(int s=1;s<=n;++s){
for(int i=1;i<=a[0];++i){
a[i]*=2;
}
for(int i=1;i<=a[0];++i){
if(a[i]>=10){
a[i+1]+=a[i]/10;
a[i]%=10;
}
}
while(a[a[0]+1]>0){
if(a[0]>=500){
break;
}
a[0]++;
}
}
a[1]--;
// printf("%d\n",a[0]);
for(int i=10;i>=1;--i){
for(int j=0;j<50;++j){
printf("%d",a[i*50-j]);
}
printf("\n");
}
}
return 0;
}
int read(){
int h=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
h=h*10+ch-'0';
ch=getchar();
}
return h;
}