Cod sursa(job #3341847)

Utilizator daniel_2009Stefan Daniel daniel_2009 Data 21 februarie 2026 12:58:39
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>
using namespace std;

static unsigned long long modBig(const string &s, unsigned long long D) {
    unsigned long long r = 0;
    for(char ch : s) {
        r = (r * 10 + (unsigned)(ch - '0')) % D;
    }
    return r;
}

static string addSmall(string s, unsigned long long x) {
    int i = (int)s.size() - 1;
    while(x > 0 || i >= 0) {
        unsigned long long digit = (i >= 0 ? (unsigned long long)(s[i] - '0') : 0ULL);
        unsigned long long sum = digit + (x % 10ULL);
        if(i >= 0)
            s[i] = char('0' + (sum % 10ULL));
        else
            s.insert(s.begin(), char('0' + (sum % 10ULL)));

        x /= 10ULL;
        if(sum >= 10ULL) {
            x += 1ULL;
        }
        i--;
    }

    int p = 0;
    while(p + 1 < (int)s.size() && s[p] == '0')
        p++;
    if(p)
        s.erase(0, p);
    return s;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ifstream fin("next.in");
    ofstream fout("next.out");

    string N;
    unsigned long long D;
    fin >> N >> D;

    unsigned long long r = modBig(N, D);
    if(r == 0) {
        fout << N << "\n";
    }
    else {
        unsigned long long add = D - r;
        fout << addSmall(N, add) << "\n";
    }
    return 0;
}