Cod sursa(job #945153)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 30 aprilie 2013 17:49:02
Problema Sarpe Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("sarpe.in"); ofstream fout("sarpe.out");

const int maxn=1005;

int N[maxn],i,j,M[maxn],n;
char s[maxn];

int main()
{
    fin >> s;

    for(n=0;s[n]>='0'&&s[n]<='9';++n);
    for(--n;n>=0;n-=3)
    {
        N[++N[0]]=s[n]-'0';
        if(n>0)
            N[N[0]]+=(s[n-1]-'0')*10;
        if(n>1)
            N[N[0]]+=(s[n-2]-'0')*100;
    }
    if(N[0]==1&&N[1]==1)
    {
        printf("2\n");
        return 0;
    }
    for(i=1;i<=N[0];++i)
        for(j=1;j<=N[0];++j)
            M[i+j-1]+=2*N[i]*N[j];
    for(i=1;i<=N[0];++i)
        M[i]-=2*N[i];
    M[1]+=4;
    for(M[0]=1;M[0]<2*N[0]||M[M[0]]>0;++M[0])
    {
        M[M[0]+1]+=M[M[0]]/1000;
        M[M[0]]%=1000;
        if(M[M[0]]<0)
            --M[M[0]+1],M[M[0]]+=1000;
    }
    while(M[M[0]]==0)
        --M[0];
    fout << M[M[0]];

    for(i=M[0]-1;i;--i)
        fout << M[i];
    fout << "\n";

    fin.close(); fout.close();
    return 0;

}