Cod sursa(job #2271225)

Utilizator NOSCOPEPROKENDYMACHEAMACUMVREAU NOSCOPEPROKENDY Data 28 octombrie 2018 11:37:39
Problema Sarpe Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>

#include <cstring>

using namespace std;



int a[100005], b[100005], c[100005];

char s[100001];

int main()

{

    freopen("sarpe.in", "r", stdin);

    freopen("sarpe.out", "w", stdout);

    scanf("%s", s);

    int L = strlen(s);

    if(L == 1 && s[0] == '1'){

        printf("2");

        return 0;

    }

    for(int i = 1; i <= L ; ++i){

        a[L - i + 1] = s[i - 1] - '0';

        b[L - i + 1] = s[i - 1] - '0';

    }

    a[0] = b[0] = L;

    c[0] = b[0] * 2;

    for(int i = 1; i <= L ; ++i){

        for(int j = 1; j <= L ; ++j)

            c[i + j - 1] += 2 * b[i] * b[j];

    }

    for(int i = 1; i <= L ; ++i)

        c[i] = c[i] - a[i] * 2;

    c[1] += 4;

    int t = 0;

    for(int i = 1; i <= c[0] ; ++i){

        c[i] += t;

        t = 0;

        if(c[i] < 0){

            while(c[i] < 0){

                --t;

                c[i] += 10;

            }

        }

        else if(c[i] > 0){

            t = c[i] / 10;

            c[i] %= 10;

        }

    }

    while(c[c[0]] == 0) --c[0];

    for(int i = c[0]; i >= 1 ; --i)

        printf("%d", c[i]);

    return 0;

}