Cod sursa(job #994287)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 5 septembrie 2013 11:47:51
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
#define vecin vector <int>

using namespace std;

vecin n;
string x;
short t=0;
long long i,d,r=0;

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

void read_data(){
    in >> x;
        n.push_back(x.size());
        for (i=x.size()-1; i>=0; i--)
            n.push_back(int(x[i])-48);
    in >> d;
}

void mod(){
    for (i=n[0]; i>=1; i--)
        r=(r*10+n[i])%d;
}

void add(){
    d-=r;
    for (i=1; i<=n[0]; i++){
        n[i]=n[i]+(d%10)+t;
        t=n[i]/10;
        n[i]%=10;
        d/=10;
    }
    if (d)
        while (d) {
            n.push_back((d%10)+t);
            n[0]++;
            d/=10;
            t=n[n[0]]/10;
            n[n[0]]%=10;
        }
    if (t) n[0]++, n.push_back(t);
}

void print_n(){
    for (i=n[0]; i>0; i--)
        cout << n[i];
    out << "\n";
}

int main(){
    read_data();
    mod();
    if (r) add();
    print_n();

    return 0;
}