Cod sursa(job #831279)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 8 decembrie 2012 13:28:39
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
#include<string.h>

using namespace std;

#define MAXF 1000005

typedef int Huge[ MAXF ];
int i, j, len;
long long int D, r;
Huge a;
char S[ MAXF ];

inline long long int Divide(Huge a, long long int x)
{
    int i;
    long long int r = 0;

    for(i = a[0]; i; --i)
        r = ((long long)(10 * r + a[i]))%x;

    return r;
}

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

    fgets(S, 1000003, f);
    fscanf(f, "%lld", &D);

    fclose(f);

    len = strlen(S) - 2;

    a[0] =  len + 1;
    for(i = len, j = 1; i >= 0; --i, ++j)
        a[j] = S[i] - '0';

    r = Divide(a, D);
    r = (D - r) % D;

    j = 0;
    for(i = 1; i <= a[0]; ++i)
    {
        a[i] += r % 10 + j;
        j = a[i] / 10;
        a[i] %= 10;
        r /= 10;
    }

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

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

    for(i = a[0]; i; --i)
        fprintf(g, "%d", a[i]);

    fprintf(g, "\n");

    fclose(g);

    return 0;
}