Cod sursa(job #67866)

Utilizator sealTudose Vlad seal Data 25 iunie 2007 19:23:36
Problema Sarpe Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
#include<string.h>
#define Nm 2002
char S[Nm];
int A[Nm],B[Nm],C[Nm];

void read()
{
    freopen("sarpe.in","r",stdin);
    scanf("%s",S);
}

void solve()
{
    int i,j,t;

    for(i=strlen(S)-1;i>=0;--i)
        A[++A[0]]=B[++B[0]]=S[i]-'0';
    for(i=1;!A[i];++i)
        A[i]=9;
    --A[i];
    if(!A[A[0]])
        --A[0];

    for(i=1;i<=A[0];++i)
        for(t=0,j=1;j<=B[0] || t;++j,t/=10)
            C[i+j-1]=(t+=C[i+j-1]+A[i]*B[j])%10;
    C[0]=A[0]+B[0];
    if(!C[C[0]])
        --C[0];

    t=0;
    for(i=1;i<=C[0] || t;++i,t/=10)
        C[i]=(t+=C[i]<<1)%10;
    C[0]=i-1;

    t=0;
    for(i=1;i<=C[0] || t;++i,t/=10)
        C[i]=(t+=C[i]+(i>1?0:4))%10;
    C[0]=i-1;
}

void write()
{
    int i;

    freopen("sarpe.out","w",stdout);
    for(i=C[0];i;--i)
        printf("%d",C[i]);
    printf("\n");
}

int main()
{
    read();
    solve();
    write();
    return 0;
}