http://acm.nyist.net/JudgeOnline/problem.php?pid=45
#include <stdio.h>
#include <memory.h>
__int64 f[110];//记录 2^i*2^i所需要的方格数
int index,a[110],b=4; //f[i]=4f[i-1]+1; 划分四个区域 在中间填一个 则每个小区域为f[i-1]
// 2^(i+1)*2^(i+1)= 4(2^i*2^i)
void Muti()
{
int i,j,k;
for(i=1;i<=index;i++)
{
a[i]=a[i]*b; //每一位都乘 4
}
for(i=1;i<index;i++)
{
if(a[i]>=10)
{
a[i+1]+=a[i]/10;
a[i]=a[i]%10; //处理进位
}
}
while(a[index]>=10)
{ //处理最高位进位
a[index+1]=a[index]/10;
a[index]=a[index]%10;
index++; //
}
}
void Add()
{
int i=1,j,k;
a[1]+=1;
while(a[i]>=10)
{
a[i+1]+=a[i]/10;
a[i]=a[i]%10;
i++;
}
}
int main()
{
int n,k,t,i;
scanf("%d",&t);
while(t--)
{
scanf("%d",&k);
index=1;
a[1]=1;
for(i=2;i<=k;i++)
{
Muti();
Add();
}
for(i=index;i>=1;i--)
{
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}