Pagini recente » Cod sursa (job #2654863) | Borderou de evaluare (job #364336) | Clasament igorj_7 | Cod sursa (job #198867) | Cod sursa (job #705716)
Cod sursa(job #705716)
#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;
}