Cod sursa(job #471027)

Utilizator darrenRares Buhai darren Data 16 iulie 2010 16:43:46
Problema Next Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <string>
#include <vector>

using namespace std;

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

void Read();
void Solve();
void Write();

string ax;
vector<int> n;
long long d, size;

int main()
{
	Read();
	Solve();
	Write();
}

void Read()
{
	fin >> ax >> d;
}

void Solve()
{
	n.resize(ax.size()), size = ax.size();
	for (int i = 0; i < size; ++i)
	{
		n[i] = ax[i] - '0';
	}
	
	int rest = 0;
	for (vector<int>::iterator it = n.begin(); it != n.end(); ++it)
	{
		rest *= 10, rest += *it;
		if (rest > d) rest -= (rest / d) * d;
	}
	int need = d - rest;
	
	reverse(n.begin(), n.end());
	n[0] += need;
	
	n.resize(1000000);
	
	int it = 0;
	while (n[it] > 9)
	{
		n[++it] += n[it - 1] / 10;
		n[it - 1] %= 10;
	}
	size = it;
	n.resize(it + 1);
}

void Write()
{
	reverse(n.begin(), n.end());
	for (vector<int>::iterator i = n.begin(); i != n.end(); ++i)
		fout << *i;
}