Cod sursa(job #1786369)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 22 octombrie 2016 21:05:32
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f ("next.in");
ofstream g ("next.out");
const int MAXN = 1000000;
const int MAXD = 20;
char c[MAXN + 2], N[MAXN + 2], c2[MAXD], D2[MAXN + 2]={0};
long long D, rest, crest;

void afisare (char A[])
{
    for (int i = A[0]; i >= 1; i--)
        g << int (A[i]);
}

void citire()
{
    f >> c;
    int lN = strlen (c);
    for (int i = lN - 1; i >= 0; i--)
        N[lN - i] = c[i] - '0';
    N[0] = lN;

    f >> D;

}

long long mod (char A[], long long B)
{
    long long i, t = 0;
    for (i = A[0]; i >= 1; i--)
        t = (t * 10 + A[i]) % B;
    return t;
}

void add (char A[], char B[])
{
    int i, t = 0;
    for (i = 1; i <= A[0] || i <= B[0] || t; i++, t /= 10)
        A[i] = (t += A[i] + B[i]) % 10;
    A[0] = i - 1;
    afisare (A);
}

int main()
{
    citire();
    rest = mod (N, D);
    rest = D - rest;
    if (rest == D) rest = 0;
    long long lR = 0;
    crest=rest;
    while (rest > 0)
    {
        D2[++lR] = rest % 10;
        rest /= 10;
    }
    D2[0] = lR;
    add (N, D2);
    return 0;
}