Pagini recente » Cod sursa (job #1212047) | Cod sursa (job #3255849) | Cod sursa (job #1156232) | Cod sursa (job #202018) | Cod sursa (job #38538)
Cod sursa(job #38538)
#include <stdio.h>
#include <string.h>
#define MAXC (1 << 20)
#define base 10
typedef int num[MAXC];
typedef long long llong;
num A;
llong D;
void add_one(num A)
{
int i;
for(i = 1; A[i] == 9 && i <= A[0]; i++)
A[i] = 0;
if(i == A[0]+1)
A[++A[0]] = 1;
else
A[i]++;
}
void mul(num A, llong B)
{
int i;
llong t = 0;
for(i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (int)((t += B*A[i]) % 10);
A[0] = i-1;
}
void div(num A, llong B)
{
int i;
llong t = 0;
for(i = A[0]; i >= 1; i--, t %= B)
A[i] = (int)( (t=t*10+A[i])/B );
for(; !A[A[0]] && A[0] > 1; A[0]--) ;
}
llong rest(num A, llong B)
{
int i;
llong t = 0;
for(i = A[0]; i >= 1; i--, t %= B)
t = t*10+A[i];
return t;
}
char sir[MAXC];
void ruleaza(void)
{
int i;
llong r;
scanf("%s\n", &sir), A[0] = strlen(sir);
scanf("%lld\n", &D);
for(i = 1; i <= A[0]; i++)
A[i] = sir[A[0]-i]-'0';
r = rest(A, D);
if(r == 0)
{
for(i = A[0]; i >= 1; i--)
printf("%d", A[i]);
printf("\n");
}
else
{
div(A, D);
add_one(A);
mul(A, D);
for(i = A[0]; i >= 1; i--)
printf("%d", A[i]);
printf("\n");
}
}
int main(void)
{
freopen("next.in", "rt", stdin);
freopen("next.out", "wt", stdout);
ruleaza();
return 0;
}