Pagini recente » Cod sursa (job #2372824) | Cod sursa (job #392520) | Cod sursa (job #1700304) | Cod sursa (job #2747126) | Cod sursa (job #1309153)
#include <bits/stdc++.h>
using namespace std;
long long B;
int A[1000013],F[10000013],i;
string s;
void add(int A[],int B[])
{
int i,rest=0;
for (i=1;i<=A[0] || i<=B[0] || rest;++i)
{
rest+=A[i]+B[i];
A[i]=rest%10;
rest/=10;
}
A[0]=i-1;
}
void decrease(int A[], int B[])
{
int i,rest(0);
for (i=1;i<=A[0] || rest;++i)
{
A[i]-=B[i]+rest;
A[i]+=(rest=A[i]<0)*10;
}
while(A[0] && !A[A[0]]) --A[0];
}
long long mod(int A[], long long B)
{
long long i,rest(0);
for (i=A[0];i>0;--i)
rest=(rest*10+A[i])%B;
return rest;
}
void reverse(int A[])
{
for (int i=1;i<=A[0]/2;++i)
swap(A[i],A[A[0]-i+1]);
}
void assign(string s, int A[])
{
for (int i=0;i<s.size();++i) A[++A[0]]=s[i]-'0';
}
int main(void)
{
ifstream in("next.in");
ofstream out("next.out");
getline(in,s); assign(s,A); reverse(A);
in>>B;
long long modulo=(B-mod(A,B))%B;
while(modulo)
{
F[++F[0]]=modulo%10;
modulo/=10;
}
reverse(F);
add(A,F);
for (i=A[0];i>=1;--i) out<<A[i];
return 0;
}