Pagini recente » Cod sursa (job #687148) | Cod sursa (job #252594) | Cod sursa (job #1686756) | Cod sursa (job #3201276) | Cod sursa (job #312182)
Cod sursa(job #312182)
#include <stdio.h>
#include <string.h>
#define N 1000005
char s[N];
int v[N],r;
long long d;
void citire()
{
int t;
fgets(s+1,N,stdin);
t=(int)strlen(s+1);
int i;
for (i=t; i>=1; i--)
{
if ((s[i]-'0')>=0 && (s[i]-'0')<=9)
v[++r]=s[i]-'0';
}
v[0]=t;
scanf("%lld",&d);
}
long long mod(int A[],long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void mul(int A[], long long B)
{
int i;
long long t = 0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
A[i] = (t += A[i] * B) % 10;
A[0] = i - 1;
}
void add(int A[])
{
int i, t = 0;
for (i=1; i<=A[0] || i<=1 || t; i++, t/=10)
A[i] = (t += A[i] + 1) % 10;
A[0] = i - 1;
}
void div(int A[], long long B)
{
int i;
long long 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]--);
}
void rezolva()
{
if (mod(v,d)==0)
printf("%s\n",s+1);
else
{
div(v,d);
add(v);
mul(v,d);
for (int i=v[0]; i>=1; i--)
printf("%d",v[i]);
}
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
citire();
rezolva();
return 0;
}