Pagini recente » Cod sursa (job #2754936) | Cod sursa (job #866249) | Cod sursa (job #2468670) | Cod sursa (job #1854932) | Cod sursa (job #1777928)
#include<bits/stdc++.h>
#define baza 1000
using namespace std;
long long v[500005],d,v1[500005],rest;
char s[1200005],buff[500];
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;
}
a[0]=i-1LL;
}
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<10)
{
printf("00%lld",x);
return;
}
if(x<100)
{
printf("0%lld",x);
return;
}
printf("%lld",x);
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s",&s);
long long x=1LL*strlen(s);
long long z=x%(1LL*3);
fclose(stdin);
freopen("next.in","r",stdin);
long long dv=0;
if(z)
{
memset(buff,0,20);
for(int i=0;i<z;i++) scanf("%c",&buff[i]);
long long y=0;
for(long long i=0;i<z;i++)
{
y=y*10+(buff[i]-'0');
}
v[++dv]=y;
x-=z;
}
while(x>0)
{
{
memset(buff,0,20);
for(int i=0;i<3;i++) scanf("%c",&buff[i]);
// long long y=atol(buff);
// v[++dv]=atol(buff);
long long y=0;
for(long long i=0;i<3;i++)
{
y=y*10+(buff[i]-'0');
}
v[++dv]=y;
x-=3;
}
}
reverse(v+1,v+dv+1);
v[0]=dv;
scanf("\n");
scanf("%lld",&d);
rest=restscalar(v,d);
if(!rest) rest=d;
rest=d-rest;
conversie(v1,rest);
adunare(v,v1);
x=v[0];
//scrie(v[x]);
printf("%lld",v[x]);
for(long long i=x-1;i>=1;i--)
scrie(v[i]);
return 0;
}