Cod sursa(job #3205727)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 20 februarie 2024 13:13:10
Problema Patrate2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("patrate2.in");
ofstream G("patrate2.out");
int n,j,i,t,a[6340],b[6340],c[6340],d[6340];
void A(int c[],int a[],int b[])
{
    int i,j,t;
    for(i=1;i<=a[0];++i) {
        for(t=0,j=1;j<=b[0]||t;c[i+j-1]=(t+=c[i+j-1]+a[i]*b[j])%10,++j,t/=10);
        if(i+j-2>c[0])
            c[0]=i+j-2;
    }
}
int main()
{
    for(F>>n,a[0]=a[1]=1,j=2;j<=n;a[0]=i-1,++j)
        for(t=0,i=1;i<=a[0]||t;a[i]=(t+=a[i]*j)%10,++i,t/=10);
    for(n*=n,b[0]=b[1]=c[0]=1,c[1]=2;n;memset(d,0,sizeof d),A(d,c,c),memcpy(c,d,sizeof d),n>>=1)
        if(n&1)
            memset(d,0,sizeof d),A(d,b,c),memcpy(b,d,sizeof d);
    for(memset(d,0,sizeof d),A(d,a,b),i=d[0];i;G<<d[i--]);
    return 0;
}