Pagini recente » Cod sursa (job #2728089) | Cod sursa (job #2795714) | Cod sursa (job #543852) | Cod sursa (job #2848846) | Cod sursa (job #258047)
Cod sursa(job #258047)
#include<stdio.h>
#include<string.h>
#include<iostream.h>
int decomp(long long aux,int g[20])
{
int nr=0;
while(aux)
{
g[nr++]=aux%10;
aux/=10;
}
return nr;
}
struct GigaNumber
{
int overflow;
short int number[1000010];
void plus(long long aux)
{
int nra=0,i=0;
int ginecolog[20];
nra=decomp(aux,ginecolog);
int raportalau=0;
int lim=(nra>overflow)?nra:overflow;
for(i=0;i<=lim;++i)
{
if(i<nra)
number[i]+=ginecolog[i];
number[i+1]+=number[i]/10;
number[i]%=10;
}
if(nra>overflow)
overflow=nra;
}
};
GigaNumber n;
long long imparte(GigaNumber &v,long long dp)
{
int i=v.overflow-1,nr=0;
long long aux=0;
for(i=n.overflow-1;i>=0;)
{
while(aux<dp&&i>=0)
{
aux=aux*10+v.number[i];
--i;
}
aux%=dp;
}
return aux;
}
void outfile(GigaNumber a)
{
for(int i=a.overflow-1;i>=0;--i)
printf("%d",a.number[i]);
}
int main()
{
long long dimprt=0;
int nr=0,i;
char aux;
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');
/* scanf("%c",&aux);
do
{
dimprt=dimprt*10+aux-48;
scanf("%c",&aux);
}
while(!feof(stdin));*/
int st=0;
int dr=nr-1;
while(st<dr)
{
aux=n.number[st];
n.number[st]=n.number[dr];
n.number[dr]=aux;
st++;
dr--;
}
long long sc=0;
n.overflow=nr;
//scanf("%lld",&dimprt);
cin>>dimprt;
sc=imparte(n,dimprt);
if(sc)
{
dimprt-=sc;
n.plus(dimprt);
}
outfile(n); }