Pagini recente » Cod sursa (job #1466974) | Cod sursa (job #3122350) | Cod sursa (job #1800974) | Cod sursa (job #592649) | Cod sursa (job #1747747)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int NMAX=1000000;
char s[NMAX+5];
class HugeN
{
private: int x[NMAX+10];
public: HugeN();
HugeN(char *s);
HugeN(const HugeN&other);
void get_huge();
HugeN&operator+=(long long k);
long long&operator%(long long k);
int cmp(const HugeN&other);
};
HugeN::HugeN()
{
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN::HugeN(char *s)
{
int i;
x[0]=strlen(s);
for (i=1;i<=x[0];i++)
x[i]=s[x[0]-i]-48;
}
HugeN::HugeN(const HugeN&other)
{
memset(x,0,sizeof(x));
for (int i=0;i<=other.x[0];i++)
x[i]=other.x[i];
}
void HugeN::get_huge()
{
int i;
for (i=x[0];i>=1;i--)
printf("%d", x[i]);
printf ("\n");
}
int HugeN::cmp(const HugeN&other)
{
if (x[0]<other.x[0])
return -1;
else
if(x[0]>other.x[0])
return 1;
else
{
for (int i=x[0];i>=1;i--) {
if (x[i]>other.x[i])
return 1;
else if (x[i]<other.x[i])
return -1;
}
}
return 0;
}
HugeN&HugeN::operator+=(long long k){
int i;
long long aux,tr=k;
for (i=1;i<=x[0];i++){
aux=x[i]+tr;
x[i]=aux%10;
tr=aux/10;
}
while (tr){
x[0]++;
x[x[0]]=tr;
tr/=10;
}
return *this;
}
long long&HugeN::operator%(long long k)
{
int i;
long long r;
r=0;
for (i=x[0];i>=1;i--)
{
r=r*10+x[i];
r=r%k;
}
return r;
}
int main()
{
freopen ("next.in","r",stdin);
freopen ("next.out","w",stdout);
long long k,rest;
gets(s);
HugeN a(s);
scanf ("%lld",&k);
rest=a%k;
k=k-rest;
a+=k;
a.get_huge();
return 0;
}