Pagini recente » Istoria paginii utilizator/mtom.dot | Profil vladbadii | Istoria paginii utilizator/andreea12criss | Istoria paginii utilizator/forta_dinamo | Cod sursa (job #1777237)
#include<bits/stdc++.h>
#define baza 10
using namespace std;
long long v[500005],d,v1[500005],rest;
char s[500005];
long long restscalar(long long a[],long long n)
{
long long t=0;
for (long long i=a[0];i>=1;i--)
{
t=(t*baza+a[i])%n;
}
return t;
}
void adunare(long long a[],long long b[])
{
long long t=0,i;
for(i=1;i<=a[0] ||i<=b[0] ||t;i++)
{
t=t+a[i]+b[i];
a[i]=t%baza;
t/=baza;
}
}
void conversie(long long v[],long long x)
{
long long da=0;
while(x)
{
v[++da]=x%baza;
x/=baza;
}
v[0]=da;
}
void scrie(long long x)
{
/* if(x<100000000000000)
{
printf("0%lld",x);
return;
}
if(x<10000000000000)
{
printf("00%lld",x);
return;
}
if(x<1000000000000)
{
printf("000%lld",x);
return;
}
if(x<100000000000)
{
printf("0000%lld",x);
return;
}
if(x<10000000000)
{
printf("00000%lld",x);
return;
}
if(x<1000000000)
{
printf("000000%lld",x);
return;
}
if(x<100000000)
{
printf("0000000%lld",x);
return;
}
if(x<10000000)
{
printf("00000000%lld",x);
return;
}
if(x<1000000)
{
printf("000000000%lld",x);
return;
}
if(x<100000)
{
printf("0000000000%lld",x);
return;
}
if(x<10000)
{
printf("00000000000%lld",x);
return;
}
if(x<1000)
{
printf("000000000000%lld",x);
return;
}
if(x<100)
{
printf("0000000000000%lld",x);
return;
}
if(x<10)
{
printf("00000000000000%lld",x);
return;
}*/
printf("%lld",x);
}
void afisare(long long v[])
{
long long x=v[0];
//scrie(v[x]);
printf("%lld",v[x]);
for(long long i=x-1;i>=1;i--)
scrie(v[i]);
printf("\n");
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s",&s);
int x=strlen(s);
for(int i=0;i<x;i++)
{
v[i+1]=s[i]-'0';
}
reverse(v+1,v+x+1);
v[0]=x;
scanf("\n");
scanf("%lld",&d);
rest=restscalar(v,d);
rest=d-rest;
conversie(v1,rest);
adunare(v,v1);
afisare(v);
return 0;
}