Pagini recente » Cod sursa (job #1206305) | Cod sursa (job #757620) | Cod sursa (job #1840171) | Cod sursa (job #1155601) | Cod sursa (job #159360)
Cod sursa(job #159360)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1000007
#define D 30
void add(int A[N], int B[D])
{
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;
}
void sub(int A[N], int B[D])
{
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
long long mod(int A[N], long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + (long long)A[i]) % B;
return t;
}
void transform(int A[D],long long x)
{
do{
A[++A[0]]=x%10;
x/=10;
}while(x);
}
void sir_nr(int A[N],char s[N])
{
int l=strlen(s);
A[0]=l;
for(int i=1;i<=l;++i)
A[i]=(s[l-i]-'0');
}
void scrie(int A[N])
{
for(int i=A[0];i>0;--i)
printf("%d",A[i]);
printf("\n");
exit(0);
}
int main(){
char s[N];
long long d,r;
int a[N],x[D];
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s\n",s);
scanf("%lld",&d);
sir_nr(a,s);
r=mod(a,d);
if(r==0)
scrie(a);
transform(x,d);
add(a,x);
transform(x,r);
sub(a,x);
scrie(a);
return 0;
}