Cod sursa(job #2789887)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 28 octombrie 2021 08:42:04
Problema Sarpe Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("sarpe.in");
ofstream G("sarpe.out");
char s[1003];
int i,v[2003],u[2003],z[2003],t,j;
int main()
{
    for(F.getline(s,1001),v[0]=strlen(s)-1,z[0]=1,z[1]=4,i=1;i<=v[0];++i)
        v[i]=s[v[0]-i]-'0';
    for(i=1;i<=v[0];++i) {
        for(t=0,j=1;j<=v[0]||t;++j,t/=10)
            u[i+j-1]=(t+=u[i+j-1]+v[i]*v[j])%10;
        if(i+j-2>u[0])
            u[0]=i+j-2;
    }
    for(t=0,i=1;i<=u[0];++i)
        u[i]-=((i<=v[0])?v[i]:0)+t,u[i]+=(t=u[i]<0)*10;
    for(;u[0]>1&&!u[u[0]];--u[0]);
    for(t=0,i=1;i<=u[0]||t;++i,t/=10)
        u[i]=(t+=u[i]*2)%10;
    for(u[0]=i-1,t=0,i=1;i<=u[0]||i<=z[0]||t;++i,t/=10)
        u[i]=(t+=u[i]+z[i])%10;
    u[0]=i-1;
    if(v[0]==1&&v[1]==1)
        G<<2;
    else
        for(i=u[0];i;--i)
            G<<u[i];
    return 0;
}