Cod sursa(job #3276287)

Utilizator PitigoiOlteanEmanuelPitigoi Oltean Emanuel PitigoiOlteanEmanuel Data 13 februarie 2025 09:05:07
Problema Sarpe Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.92 kb
#include <fstream>
#include <queue>
#include <vector>
#include <unordered_map>
#include <algorithm>

using namespace std;
ifstream cin("sarpe.in");
ofstream cout("sarpe.out");
 int a[1005],b[1005],c[2005],rez[2005];
int prod()
{

    for(int i=1;i<=a[0];i++)
    {
        for(int k=1;k<=b[0];k++)
        {
            c[i+k-1]+=a[i]*b[k];
         //cout<<a[i]<<" "<<b[k]<<" "<<c[i]<< '\n';
        }
    }

    int ca;
    long long t=0;
    for(int i=1;i<a[0]+b[0];i++)
    {
        t+=c[i];
        c[i]=t%10;
        if(t>0)
        {
            ca=i;
        }
        t/=10;
    //cout<<i<<" "<<t<<"\n";



    }


    while(t>0)
    {
        ca++;
        c[ca]=t%10;
        t/=10;

    }
    for(int i=1;i<=ca;i++)
    {
        b[i]=c[i];

    }
    b[0]=ca;
     for(int i=1;i<=ca;i++)
    {
        c[i]=0;
       // cout<<b[i]<<" ";
    }
    return 0;


}

string n;
int panarame;


int sum()
{
    int t=0;

    for(int i=1;i<=max(rez[0],b[0]  );i++ )
    {
            t+=rez[i];
            t+=b[i];
            rez[i]=t%10;
            t/=10;
    }
    panarame=max(rez[0],b[0]);

    while(t>0)
    {
        panarame++;
        rez[panarame]=t%10;

        t/=10;
    }
    rez[0]=panarame;
    return 0;
}




int scad()
{
    for(int i=1;i<=n.length();i++)
    {
        if(a[i]>0)
        {
            a[i]--;
            break;
        }
        a[i]=9;
    }
    return 0;
}
int scad1()
{
     for(int i=1;i<=b[0];i++)
    {
        if(b[i]>0)
        {
            b[i]--;
            if(i==b[0] && b[i]==0)
            {
                b[0]--;
            }
            break;
        }
        b[i]=9;

    }

    return 0;

}


int main()
{

    cin>>n;
    if(n.length()==1)
    {
        if(n[1]=='1')
        {
            cout<<2;
            return 0;
        }
        if(n[1]=='2')
        {
            cout<<8;
            return 0;

        }
        if(n[1]=='3')
        {
            cout<<"16";
            return 0;
        }

    }
    a[0]=n.length();
    b[0]=n.length();
    for(int i=1;i<=a[0];i++)
    {
        a[i]=n[n.length()-i]-'0';
        b[i]=n[n.length()-i]-'0';
    }
    scad();



    scad1();
    scad1();

   // cout<<a[1]<<" "<<b[1]<<" ";

    prod();
    //n-1 * n-2




    for(int i=1;i<=a[0];i++)
    {
        a[i]=0;
    }
    a[0]=1;
    a[1]=2;

    prod();


    //n-1 n-2 2
    for(int i=1;i<=b[0];i++)
    {
        rez[i]=b[i];
        b[i]=0;
    }
    rez[0]=b[0];
    for(int i=1;i<=n.length();i++)
    {
        b[i]=n[n.length()-i]-'0';

    }
    b[0]=n.length();
    //b=n;
     for(int i=1;i<=a[0];i++)
    {
        a[i]=0;
    }
    a[0]=1;
    a[1]=4;

    prod();

    sum();
    for(int i=1;i<=rez[0];i++){
        cout<<rez[1-i+rez[0]];

    }







    return 0;
}