#include<stdio.h>
#include<windows.h>
#include<string.h>
/*#include<malloc.h>
int power (int x);
int plus (int maxa,int maxb,int a[],int b[]);
int subtract (int maxa,int maxb,int a[],int b[]);*/
int multiply (int maxa,int maxb,int a[],int b[]);
/*int devide (int maxa,int maxb,int a[],int b[]);*/
void main()
{
int a[500000]={0};
int *p;
int ouu,i=0;
printf("请输入想求2的多少次方\n");
scanf("%d",&ouu);
a[0]=1;
int ou,maxa=0,maxb=0,maxaa=0,maxbb=0;
for(ou=0;ou<ouu/*ouu*/;ou++)
{
maxa=multiplyed(maxa,a,2);
printf("%d\n",maxa);
}
for(i=maxa;i>=0;--i)
{
printf("%d",a[i]);
}
printf("\n");
system("pause");
}
/*int plus (int maxa,int maxb,int a[],int b[])
{
int t;
int max;
if(maxa>maxb){ max=maxa;}
if(maxa<=maxb){ max=maxb;}
for(t=0;t<=max;++t)
{
a[t]=a[t]+b[t];
if(t=max && a[t]/10>=10)
{
maxa++;
}
if((a[t]/10)>=1)
{
a[t]=a[t]-10;
a[t+1]=a[t+1]+1;
}
}
return maxa;
}
int subtract (int maxa,int maxb,int a[],int b[])
{
int t;
int max;
if(maxa>maxb){ max=maxa;}
if(maxa<=maxb){ max=maxb;}
for(t=0;t<=max;++t)
{
a[t]=a[t]-b[t];
/*if(t=max && a[t]<0)
{
subtract(maxb,maxa,b,a);
}
// 负数暂时不做处理
if(a[t]<0)
{
a[t]=a[t]+10;
a[t+1]=a[t+1]+1;
}
}
return maxa;
}*/
//乘法暂时只做乘个位数的
int multiplyed (int maxa,int a[],int b)
{
int x,t;
for(t=0;t<=maxa;t++)
{
a[t]*=b;
}
for(t=0;t<=maxa;t++)
{
if(a[t]/10==1)
{
a[t]-=10;
a[t+1]+=1;
if(t==maxa){maxa+=1;return maxa;}
}
if(a[t]/10==2)
{
a[t]-=20;
a[t+1]+=2;
if(t==maxa){maxa+=1;return maxa;}
}
if(a[t]/10==3)
{
a[t]-=30;
a[t+1]+=3;
if(t==maxa){maxa+=1;return maxa;}
}
}
return maxa;
}
/*int devide (int maxa,int a[],int b[])
{
}*/
/*int power (int x)
{
int t,y=10;
for(t=0;t<x;t++)
{
y*=10;
}
return y;
}*/