Cod sursa(job #420721)

Utilizator SpiderManSimoiu Robert SpiderMan Data 20 martie 2010 13:45:32
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;

#define MAX 1000001

ifstream f("next.in");
ofstream g("next.out");

int N[MAX],T[25];
char n[MAX];
long long D,J,k;

void add(int A[], int B[])
{
    int i, t = 0, k = min(A[0],B[0]);
    for (i=1; i<= k || t; i++, t/=10)
        A[i] = (t += A[i] + B[i]) % 10;
    //if (i-1>A[0]) A[0]= i - 1;
     if (k==A[0])
    {
        for (i = i; i<=B[0]; i++) A[i]=B[i];
        A[0] = B[0];
    }
}
long long mod(int A[], long long B)
{
    int i;
    long long t = 0;
    for (i = A[0]; i > 0; i--)
        t = (long long) (t * 10LL + A[i]) % B;
    return t;
}
void citire(int x[],char a[])
{
    x[0]=strlen(a);
    for (int i = x[0] -1; i >= 0; --i )
        x[i+1]=a[x[0]-i-1] - '0';
}
void afis(int x[])
{
    for (int i=x[0];i>0;i--) g<<x[i];
}
int main()
{
    f>>n;
    f>>D;
    citire(N,n);
    k = mod(N,D);
    J = D - k;
    k = J % D;
    sprintf( n, "%lld", k );
    citire(T,n);
    add(N,T);
    afis(N);
    return 0;
}