Pagini recente » Cod sursa (job #1040171) | Cod sursa (job #3222063) | Cod sursa (job #1366499) | Cod sursa (job #2440603) | Cod sursa (job #420643)
Cod sursa(job #420643)
#include <fstream>
using namespace std;
#define MAX 1000000
ifstream f("next.in");
ofstream g("next.out");
int N[MAX],T[20];
char n[MAX];
long long D,J,k;
void add(int A[], int B[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void sub(int A[], int B[])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= ((i <= B[0]) ? B[i] : 0) + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
int mod(int A[], long long B)
{
int i;
long long t=0;
for (i = A[0]; i > 0; i--)
t = (long long) (t * 10 + A[i]) % B;
return t;
}
void citire(int x[],char a[])
{
x[0]=strlen(a);
for (int i = x[0] -1; i >= 0; --i )
x[i+1]=a[x[0]-i-1] - '0';
}
void afis(int x[])
{
for (int i=x[0];i>0;i--) g<<x[i];
}
int main()
{
f>>n;
f>>D;
citire(N,n);
//citire(D,d);
k = mod(N,D);
//sprintf( t, "%d", k );
//citire(T,t);
//atr(D,K);
//sub(K,T);
J=D-k;
k = J % D;
sprintf( n, "%lld", k );
//memset(T,0,T[0]);
citire(T,n);
add(N,T);
afis(N);
return 0;
}