Pagini recente » Cod sursa (job #2786717) | Cod sursa (job #2440142)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int MAX_DIGITS=1000002;
const int BASE=10;
class HugeN{
private:
int x[MAX_DIGITS];
public:
//constructori
HugeN(){
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN(int n){
memset(x,0,sizeof(x));
do{
++x[0];
x[x[0]]=n%10;
n=n/10;
}while(n>0);
}
HugeN (char s[MAX_DIGITS]){
memset(x,0,sizeof(x));
int n,i;
n=strlen(s);
x[0]=n;
for(i=n-1;i>=0;i--)
x[n-i]=s[i]-'0';
}
void print(){
int i;
for(i=x[0];i>=1;i--)
fout<<x[i];
fout<<"\n";
}
long long operator% (long long k);
HugeN operator+=(long long k);
};
HugeN HugeN::operator+=(long long k){
long long tr=k;
int i;
for(i=1;i<=x[0];i++){
tr=x[i]+tr;
x[i]=tr%10;
tr=tr/10;
}
while(tr){
x[0]++;
x[x[0]]=tr%10;
tr=tr/10;
}
return *this;
}
long long HugeN::operator%(long long k){
long long r;
int i;
r=0;
for(i=x[0];i>=1;i--){
r=r*10+x[i];
r=r%k;
}
return r;
}
int main()
{
char s[MAX_DIGITS];
fin.getline(s,MAX_DIGITS);
long long d,r;
HugeN n(s);
fin>>d;
r=n%d;
if(r==0)
n.print();
else
{
d=d-r;
n+=d;
n.print();
}
return 0;
}