Cod sursa(job #1787148)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 24 octombrie 2016 11:02:07
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("next.in");
ofstream g ("next.out");
typedef char cifra;
const int MAXN = 1000000;
cifra N[MAXN + 2];
long long D, rest;
int lN;

void afisare (cifra A[], int lA)
{
    for (int i = lA; i >= 1; i--)
        g << int (A[i]);
}

void citire()
{
    f >> N;
    lN = 0;
    for (int i = 0; N[i] != 0; i++)
    {
        lN++;
        N[i] -= '0';
    }
    N[lN] = N[0];
    for (int i = lN - 1, j = 1; i >= j; i--, j++)
        swap (N[i], N[j]);
    f >> D;

}

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

void add (cifra A[], long long t, int lA)
{
    int i;
    for (i = 1; i <= lA || t; i++, t /= 10)
        A[i] = (t += A[i]) % 10;
    lA = i - 1;
}

int main()
{
    citire();
    rest = mod (N, D, lN);
    rest = D - rest;
    if (rest == D) rest = 0;

    add (N, rest, lN);
    afisare (N, lN);
    return 0;
}