Pagini recente » Cod sursa (job #1454169) | Cod sursa (job #3171775) | Cod sursa (job #2289148) | Istoria paginii runda/the_real_gennady/clasament | Cod sursa (job #1284583)
#include <cstdio>
#include <cstring>
#include <cctype>
#define IN "next.in"
#define OUT "next.out"
#define MAX 1000005
using namespace std;
class HUGE
{
private:
int x[MAX];
public:
HUGE()
{
memset(x, 0, sizeof(x));
*x = 1;
}
void operator =(const char s[])
{
memset(x, 0, sizeof(x));
int i = strlen(s) - 2;
do
{
x[++*x] = s[i] - '0';
--i;
}
while(i >= 0);
}
void operator ++()
{
int i = 1;
while(x[i] + 1 > 9)
{
x[i] = 0;
++i;
}
if(i > x[0])
++x[0];
++x[i];
}
long long operator %(const long long &MOD)
{
long long r = 0;
int i;
for(i = *x; i; --i)
r = ((r << 1) + (r << 3) + x[i]) % MOD;
return r;
}
void print(FILE *out = stdout)
{
for(int i = *x; i; --i)
fprintf(out, "%d", x[i]);
}
};
FILE *in, *out;
HUGE M;
char aux[MAX];
long long d;
void citire()
{
in = fopen(IN, "r");
fgets(aux, MAX, in);
M = aux;
fscanf(in, "%lld", &d);
fclose(in);
}
void rezolvare()
{
while(M % d)
++M;
}
void afisare()
{
out = fopen(OUT, "w");
M.print(out);
fclose(out);
}
int main()
{
citire();
rezolvare();
afisare();
return 0;
}