Cod sursa(job #47578)

Utilizator GabiAlb Gabriel Gabi Data 3 aprilie 2007 20:14:52
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;

long long Mod(int A[], long long B)
{
    long long i, t = 0;
    for (i = A[0]; i > 0; i--)
	    t = (t * 10 + A[i]) % B;

    return t;
}

int main()
{
    ifstream fin("next.in");
    ofstream fout("next.out");

    int a[100002];
    int b[100];

    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));

    char s[100002];
    long long d;
    int i;

    fin.getline(s, 100003);

    int n = strlen(s);

    fin >> d;

    a[0] = n;
    for (i = 1; i <= n; i++)
	    a[n-i+1] = s[i-1] - '0';

    long long r = Mod(a, d);

    long long x = (d - r) % d;
    int m = 0;

    while (x)
    {
	    m++;
	    b[m] = x % 10;
	    x /= 10;
    }

    b[0] = m;

    int j, t = 0;

    for (j = 1; j <= a[0] || j <= b[0] || t; j++, t /= 10)
	    a[j] = (t += a[j] + b[j]) % 10;
    
    a[0] = j - 1;

    for (i = a[0]; i >= 1; i--)
	    fout << a[i];

    fout.close();
    fin.close();

    return 0;
}