Cod sursa(job #1747551)

Utilizator mihai2003LLL LLL mihai2003 Data 25 august 2016 09:30:28
Problema Next Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.49 kb
#include <cstdio>
#include <cstring>
using namespace std;
#define NMAX 1000005
char s[NMAX-5];

class HugeN
{
    private: int x[NMAX];
    public: HugeN();
            HugeN(const char *s){
                int l=strlen(s);
                memset(x,0,sizeof(x));
                x[0]=0;
                for(l--;l>=0;l--)
                    x[++x[0]]=s[l]-'0';
            }
            void get_huge();
            HugeN operator +(long long k){
                long long trn,aux;
                trn=k;
                for(int i=1;i<=x[0];i++){
                    aux=x[i]+trn;
                    x[i]=aux%10;
                    trn=aux/10;
                }

                while(trn){
                    x[++x[0]]=trn % 10;
                    trn/=10;
                }
                return *this;
            };
            long long operator%( long long k){
                long long r=0;
                for(int i=x[0];i>=1;--i){
                    r=r*10+x[i];
                    r=r%k;
                };
               return r;
            };
};

void HugeN::get_huge()
{
    int i;
    for (i=x[0];i>=1;i--)
        printf("%d", x[i]);
    printf ("\n");
}

int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    scanf("%s",s);
    HugeN r(s);
    long long d,j;
    scanf("%lld",&d);
    j=r%d;
    if(j==0)
        r.get_huge();
    else{
        r=r+(d-j);
        r.get_huge();
    }
    return 0;
}