Cod sursa(job #41063)

Utilizator victorsbVictor Rusu victorsb Data 27 martie 2007 22:10:17
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <cstdio>
#include <string.h>
#include <algorithm>

using namespace std;

#define Lmax 1100000

int n[Lmax];
long long d;
char sir[Lmax];

void citire()
{
    int i, l;
    
    fgets(sir, Lmax, stdin);
    l = strlen(sir);
    
    
    for (i = 0; i < l; ++i)
        if ('0' <= sir[i] && sir[i] <= '9')
            n[++n[0]] = sir[i] - '0';
        else
            break;
    
    for (i = 1; i <= n[0] / 2; ++i)
        swap(n[i], n[n[0] - i + 1]);
    
    scanf("%lld\n", &d);
}

long long rest(int A[], long long d)
{
    int i;
    long long t = 0;
    
    for (i = A[0]; i > 0; --i)
        t = (t * 10 + A[i]) % d;
    
    return t;
}

void solve()
{
    long long r = rest(n, d), t;
    int i;
    
    t = (d - r) % d;

    for (i = 1; t; ++i, t /= 10)
        n[i] = (t += n[i]) % 10;
    
    if (i - 1 > n[0])
        n[0] = i - 1;
        
    for (i = n[0]; i > 0; --i)
        printf("%d", n[i]);
    printf("\n");
}

int main()
{
    freopen("next.in", "r", stdin);
    freopen("next.out", "w", stdout);
    citire();
    solve();
    return 0;
}