Pagini recente » Cod sursa (job #3198306) | Cod sursa (job #2826872) | Cod sursa (job #3213088) | Cod sursa (job #1313831) | Cod sursa (job #1838579)
#include <cstdio>
#include <algorithm>
FILE *fi, *fo;
int N[1000010];
long long D;
inline void div(int A[], long long B) {
int i, t = 0;
for (i = A[0]; i > 0; i--, t %= B)
A[i] = (t = t * 10 + A[i]) / B;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
inline long long mod(int A[], long long B) {
long long i, t = 0;
for (i = A[0]; i > 0; i--)
t = 1LL * (t * 10 + A[i]) % B;
return t;
}
inline void mul(int A[], long long B)
{
long long i, t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
inline 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;
}
int U[2] = {1, 1};
int NC[1000010];
int main() {
fi = fopen("next.in", "r");
fo = fopen("next.out", "w");
char ch;
ch = fgetc(fi);
while(ch != '\n') {
N[++N[0]] = ch - '0';
ch = fgetc(fi);
}
NC[0] = N[0];
for(int i = 1;i <= N[0];i++)
NC[i] = N[N[0] - i + 1];
fscanf(fi, "%lld", &D);
long long r = mod(NC, D);
if(r == 0) {
for(int i = NC[0];i > 0;i--)
fprintf(fo, "%d", NC[i]);
fclose(fi);
fclose(fo);
return 0;
}
div(NC, D);
add(NC, U);
mul(NC, D);
for(int i = NC[0];i > 0;i--)
fprintf(fo, "%d", NC[i]);
fclose(fi);
fclose(fo);
return 0;
}