Cod sursa(job #832130)

Utilizator vlad96Vlad Zuga vlad96 Data 9 decembrie 2012 21:48:20
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <stdio.h>
#include <string.h>

int v[1000010];
long long d;
char s[1000010];
int i, j;

inline void Add(int A[1000010], long long B)
{   int i = 0;
    while (B)
    {
        A[++i] += B%10;
        B = B / 10;
        if ( A[i] > 9 )
        {
            A[i+1] += A[i]/10;
            A[i] %= 10;
        }
        if ( i > A[0] )
            A[0] = i;
    }
}

inline long long Divide(int A[1000010], long long X)
{
    int i;
    long long R=0;

    for(i = A[0]; i; --i)
        R = ((long long)(10 * R + A[i]))%X;

    return R;
}

int main ()
{
    FILE *fis = fopen ("next.in" ,"r");

    i = 0;
    fgets(s, 1000005, fis);

    v[0] = strlen(s) - 1;
    for ( j = strlen(s)-2, i = 1; j >= 0; i++, j -- )
        v[i] = s[j]-'0';

    fscanf(fis, "%lld", &d);

    fclose(fis);

    long long a = Divide(v, d);
    a = (d - a)%d;

    Add(v, a);

    FILE *fis2 = fopen ("next.out", "w");

    for ( i = v[0]; i >= 1; i -- )
        fprintf(fis2, "%d", v[i]);

    fprintf(fis2, "\n");

    fclose(fis2);
    return 0;
}