Cod sursa(job #832170)

Utilizator vlad96Vlad Zuga vlad96 Data 9 decembrie 2012 22:39:34
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>
#include <string.h>

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

inline void Add(int A[1000050], long long B)
{   j = 0;
    for(int i = 1; i <= A[0]; ++i)
    {
        A[i] += B % 10 + j;
        j = A[i] / 10;
        A[i] %= 10;
        B /= 10;
    }

    while(j)
        ++A[0], A[ A[0] ] = j % 10, j /= 10;
}

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

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

    return R;
}

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

    fgets(s, 1000050, 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);

    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;
}