Cod sursa(job #721143)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 23 martie 2012 12:51:21
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
#include <cstring>
#include <cmath>

using namespace std;

int n, sol[1000222];
char a[1000222];
long long d;

inline void Read()
{
	ifstream f("next.in");
	f>>a;
	f>>d;
	f.close();
	
	n = strlen(a);
	for (int i=1; i<=n; i++)
		sol[n-i+1] = (int)(a[i-1] - '0');
	sol[0] = n;
}

inline long long mod()
{
    int i;
	long long t = 0;
    for (i = n; i; i--)
            t = (t * 10 + sol[i]) % d;
    return t;
}

inline void add(int B[], int nb)
{
    int i, t = 0;
    for (i=1; i<=n || i<=nb || t; i++, t/=10)
            sol[i] = (t += sol[i] + B[i]) % 10;
    sol[0] = i - 1;
}

inline void Solve()
{
	long long rest;
	rest = mod();
	if (rest)
	{
		rest = d-rest;
		int Rest[50], nr;
		for (int i = 0; i<50; i++)
			Rest[i] = 0;
		nr = 0;
		while (rest)
		{
			Rest[++nr] = rest%10;
			rest/=10;			
		}
		Rest[0] = nr;
		add(Rest, nr);
	}
}

inline void Write()
{
	ofstream g("next.out");
	for (int i = sol[0]; i; i--)
		g<<sol[i];
	g<<"\n";
	g.close();
	
}

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