Pagini recente » Cod sursa (job #2766510) | Cod sursa (job #1790110) | Cod sursa (job #2688326) | Cod sursa (job #2049100) | Cod sursa (job #2365373)
#include <bits/stdc++.h>
using namespace std;
int N[1000010],D[1000010],R[1000010],S[1000010];
ifstream fin("next.in");
ofstream fout("next.out");
void shl(int *A,int c){
for(int i=A[0]+c;i>=1;i--){
if(i>c)A[i]=A[i-c];
else A[i]=0;
}
A[0]+=c;
}
int cmp(int *A,int *B){
if(A[0]>B[0])return 1;
else if(A[0]<B[0])return -1;
for(int i=A[0];i>=1;i--){
if(A[i]>B[i])return 1;
else if(A[i]<B[i])return -1;
}
return 0;
}
void dif(int *A,int *B){
int i,t=0;
for(i=1;i<=A[0];i++){
A[i]-=B[i]+t;
if(A[i]<0){
A[i]+=10;
t=1;
}else t=0;
}
while(!A[A[0]])A[0]--;
}
void add(int *A, int *B)
{
int i,t=0;
if(A[0]<B[0]){
i=A[0]+1;
A[i]=0;
i++;
}
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 div(int *A,int *B,int *R){
int i;
R[0]=0;
for(i=A[0];i>=1;i--){
shl(R,1);
R[1]=A[i];
while(cmp(B,R)!=1){
dif(R,B);
}
}
}
void write(int *A){
for(int i=A[0];i>=1;i--)fout<<A[i];
fout<<'\n';
}
void read(int *A){
string s;
fin>>s;
A[0]=s.size();
for(int i=A[0];i>=1;i--){
A[i]=s[A[0]-i]-'0';
}
}
int main(){
read(N);
read(D);
div(N,D,R);
dif(D,R);
if(D[0]){
add(N,D);
}
write(N);
return 0;
}