Cod sursa(job #994075)

Utilizator raulstoinStoin Raul raulstoin Data 4 septembrie 2013 21:47:08
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<cstring>
#include<algorithm>

#define NMAX 1000005

using namespace std;

short v[NMAX];
char x[NMAX];
long long d,m,L;

void read()
{
	ifstream fin("next.in");
	fin>>x>>d;
	L=strlen(x);
	for(int i=1;i<=L;i++)
		v[i]=(x[i-1]-'0');
}

void mod()
{
	for(int i=1;i<=L;i++)
		m=(m*10+v[i])%d;
	if(m)
		m=d-m;
}

void add()
{
	reverse(v+1,v+L+1);
	for(int i=1;m;i++,m/=10)
	{
		if(i>L)
			L++;
		v[i]+=m%10;
	}
	for(int i=1;i<=L || v[i];i++)
	{
		if(i>L)
			L++;
		if(v[i]>9)
		{
			v[i]%=10;
			v[i+1]++;
		}
	}
}

void print()
{
	ofstream fout("next.out");
	for(int i=L;i;i--)
		x[L-i]=v[i]+'0';
	fout<<x;
}

int main()
{
	read();
	mod();
	add();
	print();
	return 0;
}