Cod sursa(job #37127)

Utilizator filipbFilip Cristian Buruiana filipb Data 24 martie 2007 17:14:59
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#include <string.h>
#define ll long long
#define NMax 1000005

int N; char S[NMax];
short int X[NMax], Y[20];
ll D;

int main(void)
{
    int i, j, c1, c2, r, t = 0; ll RST = 0;
    
    freopen("next.in", "r", stdin);
    freopen("next.out", "w", stdout);

    scanf("%s", &S);
    scanf("%lld", &D);
    
    for (i = 0, N = strlen(S); i < N; i++)
        RST = (RST * 10 + (S[i] - '0')) % D;
    
    if (RST == 0)
       printf("%s\n", S);
    else
    {
        RST = D - RST;
        for (; RST; RST /= 10)
            Y[++Y[0]] = RST % 10;              
        X[0] = N;
        for (i = 0; i < N; i++)                
            X[N-i] = S[i]-'0';        
        
        for (i = 1; i <= X[0] || i <= Y[0] || t; i++, t /= 10)
        {
            if (i > X[0]) c1 = 0; else c1 = X[i];
            if (i > Y[0]) c2 = 0; else c2 = Y[i];

            X[i] = (t += c1 + c2) % 10;
       }
        
        for (j = i-1; j >= 1; j--)
            printf("%d", X[j]);
        printf("\n");
    }
    
    return 0;
}