Cod sursa(job #2770701)

Utilizator AswVwsACamburu Luca AswVwsA Data 22 august 2021 19:02:58
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb

#include <fstream>
#include <algorithm>
#include <cstring>

using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int MAXDIGITS = 1000005;
const int BASE = 10;
string s;
class HUGE
{
private:
    int x[MAXDIGITS];
public:
    void print()
    {
        for(int i=x[0]; i>0; i--)
            fout << x[i];
        fout << '\n';
    }
    HUGE (string s)
    {
        int n, i;
        memset(x, 0, sizeof(x));
        n=s.size();
        x[0]=n;
        for(i=1; i<=x[0]; i++)
        {
            x[i]=s[n-i]-'0';
        }
    }
    // Supraincarcarea operatorilor aritmetici
    HUGE operator += (long long &a);
    long long operator % (long long k);
};
HUGE HUGE::operator += (long long &a)
{
    // x = x + other.x;
    int i, tr, aux;
    for(i=1, tr=0; i<=x[0]; i++)
    {
        aux = x[i] + a % 10 + tr;
        x[i] = aux % BASE;
        tr = aux / BASE;
        a/=10;
    }
    if(tr)
        x[++x[0]] = tr;
    return (*this);
}
long long HUGE::operator % (long long k)
{
    long long i, r=0;
    for (i=x[0]; i>=1; i--)
    {
        r = r * 10 + x[i];
        r = r % k;
    }
    return r;
}
int main()
{
    long long d, r, aux;
    fin >> s >> d;
    HUGE a(s);
    r = a % d;
    if(!r)
        a.print();
    else
    {
        aux = d - r;
        a += aux;
        a.print();
    }
    return 0;
}