Cod sursa(job #1925564)

Utilizator giotoPopescu Ioan gioto Data 13 martie 2017 13:30:10
Problema Sarpe Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 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;
}