Pagini recente » Cod sursa (job #2082679) | Cod sursa (job #2576247) | Cod sursa (job #1793390) | Cod sursa (job #3281512) | Cod sursa (job #2298844)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("next.in");
ofstream g("next.out");
int a[1000003];
long long int rest(int A[], long long int B)
{
long long int T = 0;
for(long long int i = A[0]; i > 0; i--)
{
T = T * 10 + A[i];
T %= B;
}
return T;
}
void adunare(int A[], long long int B)
{
long long int T = B;
for(long long int i = 1; T > 0 && i <= A[0]; i++)
{
T += A[i];
A[i] = T % 10;
T /= 10;
}
while(T > 0)
{
A[++A[0]] = T % 10;
T /= 10;
}
}
void scadere(int A[],long long int B)
{
long long int T=0;
for(long long int i=1;i<=A[0];i++)
{
A[i]-=B%10+T;
if(A[i]<0)
{
A[i]+=10;
T=1;
}
else T=0;
B/=10;
}
while(A[0]>1 && A[A[0]]==0)
A[0]--;
}
void citire(int A[])
{
char s[1000002];;
f >> s;
A[0] = strlen(s);
for(int i = 1; i <= A[0]; i++)
A[i] = s[A[0] - i] - '0';
}
void afisare(int A[])
{
for(int i = A[0]; i >= 1; i--)
g<< A[i];
}
int main()
{long long int d;
citire(a);
f>>d;
long long int r=rest(a,d);
scadere(a,r);
if(r!=0)
adunare(a,d);
afisare(a);
return 0;
}