Cod sursa(job #1816568)

Utilizator adiaioanaAdia R. adiaioana Data 26 noiembrie 2016 17:09:50
Problema Patrate2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>

using namespace std;
ifstream fin("patrate2.in");
ofstream fout("patrate2.out");
int v[301];
int n,i,j,t;
unsigned long long p[301],q[301];
void inm()
{
    t=0;
    q[0]=p[0]+v[0]-1;
    for(i=1;i<=p[0]+v[0];i++)
        q[i]=0;
    for(i=1;i<=p[0];i++)
        for(j=1;j<=v[0];j++)
            q[i+j-1]+=(p[i]*v[j]);
    for(i=1;i<=q[0];i++)
    {
        q[i]=q[i]+t;
        t=q[i]/10;
        q[i]=q[i]%10;
    }
    if(t)
        q[++q[0]]=t;
}
void power2()
{
   n=n*n;
    p[1]=p[0]=1;
    for(i=1;i<=n;i++)
    {
        t=0;
        for(j=1;j<=p[0];j++)
        {
            p[j]=p[j]*2+t;
            t=p[j]/10;
            p[j]=p[j]%10;
        }
        while(t)
            p[++p[0]]=t%10,t/=10;
    }
}
void factorial()
{
    v[1]=1;v[0]=1;
    for(i=2;i<=n;i++)
    {
        t=0;
        for(j=1;j<=v[0];j++)
        {
            v[j]=v[j]*i+t;
            t=v[j]/10;
            v[j]=v[j]%10;
        }
        while(t)
            v[++v[0]]=t%10,t/=10;
    }
}
int main()
{
    fin>>n;
    factorial();
    power2();
    inm();
    ///afisarea
    for(i=q[0];i>=1;i--)
        fout<<q[i];
    return 0;
}