Pagini recente » Cod sursa (job #1902674) | Cod sursa (job #2016833) | Cod sursa (job #2642740) | Monitorul de evaluare | Cod sursa (job #257465)
Cod sursa(job #257465)
#include<stdio.h>
#include<string.h>
struct GigaNumber
{
long long overflow;
short int number[100500];
void plus(long long aux)
{
long long i=0;
number[i]+=aux;
while(number[i]>9&&i<overflow)
{
number[i+1]+=number[i]/10;
number[i]%=10;
++i;
}
if(number[i]>9)
{
++number[overflow];
overflow++;
}
}
};
GigaNumber n;
long long imparte(GigaNumber &v,long long dp)
{
long long i=v.overflow-1,nr=0;
long long r,aux=0;
while(i>=0)
{
while(aux<dp&&i>=0)
{
aux=aux*10+v.number[i];
--i;
}
r=aux%dp;
aux/=dp;
}
return r;
}
void outfile(GigaNumber a)
{
for(long long i=a.overflow-1;i>=0;--i)
printf("%d",a.number[i]);
}
int main()
{
long long nr=0,i;
char aux;
long long dimprt=0;
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
aux=48;
scanf("%c",&aux);
do
{
n.number[nr]=aux-48;
++nr;
scanf("%c",&aux);
}
while(aux!='\n');
long long st=0;
long long dr=nr-1;
while(st<dr)
{
aux=n.number[st];
n.number[st]=n.number[dr];
n.number[dr]=aux;
st++;
dr--;
}
n.overflow=nr;
scanf("%lld",&dimprt);
st=imparte(n,dimprt);
if(st)
{
st=dimprt-st;
n.plus(st);
}
outfile(n);
}