Cod sursa(job #1787233)

Utilizator Y.MalmsteenB.P.M. Y.Malmsteen Data 24 octombrie 2016 12:45:14
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

const int MAXN = 1000000;
char N[MAXN + 2];
long long D, rest;
int lN;

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

void afisare(char 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(char A[], int lA, long long B)
{
    long long t = 0;
    int i;
    for(i = lA; i >= 1; i--)
        t = (t * 10 + A[i]) % B;
    return t;
}

void add(char A[], int &lA, long long t)
{
    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,lN, D);
    rest = D - rest;
    if(rest == D) rest = 0;
    add(N, lN, rest);
    afisare(N, lN);
    return 0;
}