Cod sursa(job #1748256)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 26 august 2016 11:54:29
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const int NMAX=1000005;
char s[NMAX];
class HugeN
{
    private:int x[NMAX];
    public:HugeN() {
               memset(x,0,sizeof(x));
               x[0]=1;
           }
           HugeN(char *s) {
               int l=strlen(s);
               memset(x,0,sizeof(x));
               x[0]=l;
               for (int i=l-1;i>=0;i--)
                    x[l-i]=s[i]-48;
           }
           long long operator %(long long k);
           HugeN operator +=(long long k);
           void print() {
                for (int i=x[0];i>0;i--)
                    printf("%d", x[i]);
                printf("\n");
           }
};
long long HugeN::operator %(long long k){
    int i;
    long long r=0;
    for (i=x[0];i>0;i--){
        r=r*10+x[i];
        r=r%k;
    }
    return r;
}
HugeN HugeN::operator+=(long long k){
    long long tr=k,aux;
    for (int 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%10;
        tr=tr/10;
    }
    return *this;
}

int main()
{
    long long d,r;
    gets(s);
    scanf("%I64d", &d);
    HugeN n (s);
    r=n%d;
    if (r!=0)
        n+=d-r;
    n.print();
    return 0;
}