关于c++一维数组的平方问题

##代码已经修改##
在做openjudge的时候遇到些问题
网址附上http://noi.openjudge.cn/ch0106/12
我写的代码如下:

#include<iostream>
#include<iomanip>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
    int a[101]={},n,b;
    a[0]=1;
    a[1]=1;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        if(i==0)
        {
            a[0]=1;
            a[1]=2;
        }else
        {
            for(int z=1;z<=a[0];z++)
            {
                a[z]*=2;
                if(a[z]>=10)
                {
                    a[z+1]+=a[z]/10;
                    a[z]-=10; 
                }
            }
            if(a[a[0]+1]>0)
            {
                a[0]+=1;
            }
        }
        
    }
    for(int i=a[0];i>0;i--)
    {
        cout<<a[i];
    }
}

但其结果为:

img

你这逻辑错了。
进位的那位是不该乘2的。
a[0] + 1 只会存在于高位进位了才会加一。

代码没贴完整

怎么一行两个for?