Cod sursa(job #1831935)

Utilizator danib99Buhaianu Daniel danib99 Data 19 decembrie 2016 09:06:19
Problema Patrate2 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;
ifstream fin ("patrate2.in");
ofstream fout ("patrate2.out");

int H[300],n;
long x,putere;


void Inmultire(long y)
{
    int i;
    long T=0;
    for(i=1;i<=H[0];i++)
    {
        H[i]=H[i]*y+T;
        T=H[i]/10;
        H[i]%=10;
    }
    while(T)
    {
        H[++H[0]]=T%10;
        T/=10;
    }
}

void patrate2()
{
    int r,nr,putere;
    putere=n*n;
    H[0]=1;
    H[1]=1;
    r=0;nr=1;
    if(putere>50)
    {
        if(putere%2!=0)
        {
            r=1;
            while(putere>25)
            {
                putere/=2;
                nr++;
            }
        }
        else
            while(putere>25)
        {
            putere/=2;
            nr++;
        }
    }

    x=1;
    for(int i=1;i<=putere;i++)
        x=x*2;

    if(r==1)
        Inmultire(2);

    for(int i=1;i<=nr;i++)
        Inmultire(x);

    for(int i=2;i<=n;i++)
        Inmultire(i);

    for(int i=H[0];i>=1;i--)
        fout<<H[i];


}

int main()
{
    fin>>n;
    patrate2();
    return 0;
}