Cod sursa(job #3232665)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 31 mai 2024 20:41:16
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>
using namespace std;

vector<int> add(vector<int>& a, vector<int>& b)
{
	int na = a.size(), nb = b.size();
	vector<int> ans;
	int t = 0;
	
	int i = na - 1, j = nb - 1;
	while(i >= 0 && j >= 0)
	{
		t += a[i] + b[j];
		ans.push_back(t % 10);
		t /= 10;
		--i, --j;
	}
	while(i >= 0)
	{
		t += a[i--];
		ans.push_back(t % 10);
		t /= 10;
	}
	while(j >= 0)
	{
		t += b[j--];
		ans.push_back(t % 10);
		t /= 10;
	}
	if(t)
		ans.push_back(1);
	reverse(ans.begin(), ans.end());
	return ans;
}


int main() {
	freopen("next.in", "r", stdin);
	freopen("next.out", "w", stdout);
	string s;
	uint64_t d;
	cin >> s >> d;
	uint64_t rest = 0;
	
	for(int i = 0;i < s.size();++i)
		rest = (10 * rest + (s[i] - '0')) % d;
	if(!rest)
	{
		cout << s << "\n";
		return 0;
	}
	uint64_t nr = d - rest;
	vector<int> a, b;
	for(int i = 0;i < s.size();++i)
		a.push_back(s[i] - '0');
	while(nr)
	{
		b.push_back(nr % 10);
		nr /= 10;
	}
	reverse(b.begin(), b.end());
	vector<int> r = add(a, b);
	for(int i = 0;i < r.size();++i)
		cout << r[i];
}