Pagini recente » Cod sursa (job #692184) | Cod sursa (job #58833) | Cod sursa (job #3293748) | Cod sursa (job #306326) | Cod sursa (job #1236205)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxd=1<<10;
class hugen
{
private:
int x[maxd];
public:
hugen()
{
memset(x,0,sizeof(x));
x[0]=1;
}
hugen(int n)
{
memset(x,0,sizeof(x));
x[0]=0;
do
{
x[++x[0]]=n%10;
n=n/10;
}while(n);
}
hugen(char *s)
{
memset(x,0,sizeof(x));
x[0]=strlen(s);
for (register int i=0;i<x[0];++i)
x[x[0]-i]=s[i]-48;
}
hugen(const hugen& other)
{
memcpy(x,other.x,sizeof(other.x));
}
void print()
{
for (register int i=x[0];i>=1;--i)
printf("%d",x[i]);
printf("\n");
}
hugen operator +=(const hugen& other);
hugen operator *=(long long k);
hugen operator /=(long long k);
long long operator %(long long k);
};
hugen hugen::operator +=(const hugen&other)
{
int t;
t=0;
for (register int i=1;i<=x[0];++i)
{
t=x[i]+other.x[i]+t;
x[i]=t%10;
t/=10;
}
if (t)
{
++x[0];
x[x[0]]-t;
}
return *this;
}
hugen hugen::operator *=(long long k)
{
int t;
t=0;
for (register int i=1;i<=x[0];++i)
{
t=t+x[i]*k;
x[i]=t%10;
t=t/10;
}
while (t)
{
x[++x[0]]=t%10;
t=t/10;
}
return *this;
}
hugen hugen::operator /=(long long k)
{
int r=0;
for (register int i=x[0];i>=1;--i)
{
r=r*10+x[i];
x[i]=1LL*r/k;
r=1LL*r%k;
}
while (x[0]>1&&!x[x[0]])
--x[0];
return *this;
}
long long hugen::operator %(long long k)
{
long long r=0;
for (register int i=x[0];i>0;--i)
{
r=r*10+x[i];
r%=k;
}
return r;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
long long d;
int n;
hugen b(1);
char s[1000005];
gets(s);
hugen a(s);
scanf("%lld",&d);
if (a%d==0)
d=d;
else
{
a/=d;
a+=b;
a*=d;
}
a.print();
return 0;
}