Cod sursa(job #1605227)

Utilizator gorni97aaa aaa gorni97 Data 18 februarie 2016 20:50:44
Problema Patrate2 Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[10000],b[10000],c[10000];

int pow(int x,int y)
{int p=1;

while(y>0)
{if(y%2==0)
{x=x*x;
y=y/2;
}
else
{p=p*x;
    y--;
}}
    return p;
}

void produs(int a[10000],int b[10000],int c[10000])
{int r,i,j;

    r=0;
    c[0]=a[0]+b[0]-1;
    for(i=1;i<=a[0]+b[0];i++)
        c[i]=0;

    for(i=1;i<=a[0];i++)
        for(j=1;j<=b[0];j++)
        c[i+j-1]=c[i+j-1]+a[i]*b[j];

    for(i=1;i<=c[0];i++)
        {c[i]=c[i]+r;
        r=c[i]/10;
        c[i]=c[i]%10;}

        if(r!=0)
            {c[0]++;
        c[c[0]]=r;}

a[0]=c[0];
for(i=1;i<=a[0];i++)
    a[i]=c[i];

}


int main()

{
    int n,m,i,j;
    long long d,t;
    fstream f("patrate2.in",ios::in);
    fstream g("patrate2.out",ios::out);
    f>>n;
    a[0]=0;
    m=n;i=0;

    while(m!=0)
    {i++;
    a[i]=m%10;
    m=m/10;
    a[0]++;
    }


    produs(a,a,c);
    d=0;
    for(i=c[0];i>=1;i--)
       d=d*10+c[i];



        a[0]=1;
        a[1]=1;
        for(i=2;i<=n;i++)
        {b[0]=0;
        m=i;j=0;

        while(m!=0)
        {j++;
        b[j]=m%10;
        m=m/10;
        b[0]++;
        }


        produs(a,b,c);
}

t=0;
       for(i=a[0];i>=1;i--)
        t=t*10+a[i];

g<<pow(2,d)*t;








}