Pagini recente » Cod sursa (job #1617252) | Cod sursa (job #1755341) | Cod sursa (job #3281784) | Cod sursa (job #3243757) | Cod sursa (job #37547)
Cod sursa(job #37547)
#include<stdio.h>
#include<string.h>
char s[1000010];
long long d;
int n[1000010],o[1000010],l[1000010],k,i;
void div(int A[], long long B)
{
int i;
long long t=0;
long long p=0;
for (i = A[0]; i > 0; i--, t %= B)
{
p = (t = t * 10 + A[i]) / B;
A[i]=p;
}
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
void mul(int A[], long long B)
{
int i;
long long p=0,t=0;
for (i = 1; i <= A[0] || t; i++, t /= 10)
p = (t += A[i] * B) % 10, A[i]=p;
A[0] = i - 1;
}
void print(int x[])
{
for (int i=x[0];i>=1;i--)
printf("%ld",x[i]);
printf("\n");
}
int comp(int a[], int b[])
{
if (a[0]!=b[0])
return -1;
for (int i=1;i<=a[0];i++)
if (a[i]!=b[i]) return -1;
return 0;
}
int main()
{
freopen ("next.in","rt",stdin);
freopen ("next.out","wt",stdout);
scanf("%s",&s);
scanf("%lld",&d);
k=strlen(s);
n[0]=k;
l[0]=k;
for (i=k-1;i>=0;i--)
if (s[i]>='0' && s[i]<='9')
n[k-i]=s[i]-'0',l[k-i]=s[i]-'0';
i=0;
div(l,d);
for (i=0;i<=l[0];i++)
o[i]=l[i];
mul(l,d);
if (comp(l,n)==0)
print(n);
else
{
o[1]++;
for (i=1;i<=o[0];i++)
{
if (o[i]==10)
{
o[i]=0,o[i+1]++;
if (i==o[0])
o[0]++;
}
else
break;
}
mul(o,d);
print(o);
}
return 0;
}