Cod sursa(job #705716)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 4 martie 2012 20:18:49
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#include <cstring>

#define NMax 1000005
#define LL long long

using namespace std;

int N[NMax];
LL M;

inline LL Modulo (int A[], LL B)
{
	LL Mod=0;
	for (int i=A[0]; i>0; --i)
	{
		Mod=(10*Mod+A[i])%B;
	}
	return Mod;
}

inline void Add (int A[], LL B)
{
	int i; LL T=B;
	for (i=1; i<=A[0] or T>0; ++i, T/=10)
	{
		A[i]=(T+=A[i])%10;
	}
	A[0]=i-1;
}

void Read ()
{
	freopen ("next.in", "r", stdin);
	char Number[NMax]; memset (Number, 0, sizeof (Number));
	scanf ("%s\n%I64d", Number, &M);
	N[0]=strlen (Number);
	for (int i=1; i<=N[0]; ++i)
	{
		N[i]=Number[N[0]-i]-'0';
	}
}

void Print ()
{
	freopen ("next.out", "w", stdout);
	for (int i=N[0]; i>0; --i)
	{
		printf ("%d", N[i]);
	}
	printf ("\n");
}

int main ()
{
	Read ();
	Add (N, (M-Modulo (N, M))%M);
	Print ();
	return 0;
}