Cod sursa(job #2904878)

Utilizator Utucora2017Nicolae Utucora2017 Data 18 mai 2022 12:47:47
Problema Patrate2 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include<iostream>
using namespace std;
int a[2][1001], b[2][201],cnt=0, c[1][10001];
void inm(int a[], int b[],int k){
    int t=0;
    for(int i=1;i<=b[0];i++){
        a[i]=b[i]*k+t;
        t=a[i]/10;
        a[i]%=10;
    }
    while(t){
        a[++a[0]]=t%10;
        t/=10;
    }
}
void inmv(int a[],int b[],int c[]){
    int t=0;
    c[0]=a[0]+b[0]-1;
    for(int i=1;i<=a[0]+b[0];i++)
        c[i]=0;
    for(int i=1;i<=a[0];i++)
        for(int j=1;j<=b[0];j++)
            c[i+j-1]+=a[i]*b[j];
    for(int i=1;i<=c[0];i++){
        t=(c[i]+=t)/10;
        c[i]%=10;
    }
    if(t)
        c[++c[0]]=t;
}
int main(){
    int n;
    cin>>n;
    int t=0;
    a[1][0]=1;
    a[1][1]=1;
    b[1][1]=2;
    b[1][0]=1;
    for(int i=1;i<=n;i++){
        a[t][0]=a[1-t][0];
        inm(a[t], a[1-t], i);
        t=1-t;
    }
    int tt=0;
    for(int i=2;i<=2*n;i++){
        b[tt][0]=b[1-tt][0];
        inm(b[tt],b[1-tt], 2);
        tt=1-tt;
    }
    int nn=n*n;
    while(nn>0){
        b[1][++cnt]=nn%10;
        nn/=10;
    }
    for(int i=a[1-t][0];i>0;i--)
        cout<<a[1-t][i];
    cout<<"\n";
    for(int i=b[1-tt][0];i>0;i--)
        cout<<b[1-tt][i];
    cout<<"\n";
    inmv(a[1-t], b[1-tt], c[0]);
    cout<<c[0][0]<<" ";
    for(int i=c[0][0];i>0;i--)
        cout<<c[i]<<" ";
}