Cod sursa(job #1284579)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 6 decembrie 2014 17:04:56
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <cstdio>
#include <cstring>
#include <cctype>

#define IN "next.in"
#define OUT "next.out"
#define MAX 10000000

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;
}