Pagini recente » Cod sursa (job #2910249) | Cod sursa (job #2833575) | Cod sursa (job #1210339) | Cod sursa (job #654670) | Cod sursa (job #1958168)
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
int N[1000020];
//------------------------------------------------------
void HugeMultiply(int A[], long long x){
long long i, t = 0;
for (i = 1; i <=A[0] || t; i++, t /= 10){
A[i] = (t += A[i] * x) % 10;
}
A[0] = i - 1;
}
//------------------------------------------------------
void HugeDivide(int A[], long long x){
long long i, t = 0;
for (i = A[0]; i > 0; i--, t %= x){
A[i] = (t = t * 10 + A[i]) / x;
}
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
//------------------------------------------------------
int HugeMod(int A[], int B){
int i, t = 0;
for(i = A[0]; i > 0; i--){
t = (t * 10 + A[i]) % B;
}
return t;
}
//------------------------------------------------------
int main(){
FILE *file1, *file2;
long long D;
char stringN[1000000];
int i, k = 0;
file1 = fopen("next.in", "r");
file2 = fopen("next.out", "w");
fscanf(file1, "%s", stringN);
fscanf(file1, "%lld", &D);
N[0] = strlen(stringN);
for(i=N[0]-1; i>=0; i--){
N[++k] = stringN[i] - 48;
}
if(HugeMod(N, D)==0){
fprintf(file2, "%s", stringN);
return 0;
}
HugeDivide(N, D);
N[1]++;
HugeMultiply(N, D);
for(i=N[0]; i>0; i--){
fprintf(file2, "%d", N[i]);
}
return 0;
}