Cod sursa(job #721148)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 23 martie 2012 12:59:13
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 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(long long x)
{
    int i, t = 0, nr;
    for (i=1; i<=n || t; i++)
	{
		nr = sol[i] + x%10 + t;
		x/=10;
		if (nr>=10)
		{
			t = 1;
			nr -= 10;
			sol[i] = nr;
		}
		else
		{
			t = 0;
			sol[i] = nr;
		}
	}
}

inline void Solve()
{
	long long rest;
	rest = mod();
	if (rest)
	{
		rest = d-rest;
		rest = rest%d;
		add(rest);
	}
}

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;
}