Cod sursa(job #38204)

Utilizator filipbFilip Cristian Buruiana filipb Data 25 martie 2007 15:48:55
Problema Next Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <stdio.h>
#include <string.h>
#define ll unsigned 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, t = 0; ll RST = 0;
    
    freopen("next.in", "r", stdin);
    freopen("next.out", "w", stdout);
    
    fgets(S, NMax, stdin);
    N = strlen(S);
    while (S[N-1] < '0' || S[N-1] > '9') N--;

    scanf("%lld", &D);
    
    for (i = 0; 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;
        for (i = 0; i < N; i++)                
            X[N-i] = S[i]-'0';        

        for (i = 1; i <= N || i <= Y[0] || t; i++, t /= 10)
        {
            if (i > N) 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;
}