Pagini recente » Cod sursa (job #2809759) | Cod sursa (job #3146939) | Cod sursa (job #1819522) | Cod sursa (job #1146373) | Cod sursa (job #561088)
Cod sursa(job #561088)
#include <fstream>
using namespace std;
int a[1000030], n;
long long d;
char s[1000002];
void Elim0 ()
{
int i, k=0;
for (i=0; a[i]==0; i++);
k=i;
n-=k;
if (n==0)
{
n=1;
a[0]=0;
}
else
if (k!=0)
for (i=0; i<n; i++)
a[i]=a[i+k];
}
long long Impartire ()
{
int i;
long long y, x=0;
for (i=0; i<n; i++)
{
x*=10;
x+=a[i];
y=(long long)x/d;
a[i]=y%10;
x=(long long)(x-((long long)a[i]*d));
}
Elim0 ();
return x;
}
void Adunare1 ()
{
int i;
i=0;
a[i]++;
while (a[i]==10)
{
a[i]=0;
a[++i]++;
}
if (i==n)
n++;
}
void Inversare ()
{
int i, j, aux;
for (i=0, j=n-1; i<j; i++, j--)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
void Inmultire ()
{
Inversare ();
int i;
long long t=0, ceadun;
for (i=0; i<n; i++)
{
ceadun=a[i];
ceadun*=d;
ceadun+=t;
a[i]=ceadun%10;
t=(long long)ceadun/10;
}
while (t)
{
a[i++]=t%10;
t/=10;
}
n=i;
}
int main ()
{
ifstream f("next.in");
f>>s;
f>>d;
f.close();
int i;
n=strlen (s);
for (i=0; i<n; i++)
a[i]=s[i]-'0';
if (Impartire ()==0)
{
ofstream g("next.out");
g<<s<<"\n";
g.close();
return 0;
}
Adunare1 ();
Inmultire ();
ofstream g("next.out");
for (i=n-1; i>-1; i--)
g<<a[i];
g<<"\n";
g.close();
return 0;
}