Cod sursa(job #1747923)

Utilizator alex202Alex Abrudan alex202 Data 25 august 2016 19:43:50
Problema Next Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAX_DIGITS=1000005;
char s[MAX_DIGITS];
class hugen
{
    private: int x[MAX_DIGITS];
    public:hugen()
        {
        memset(x,0,sizeof(x));
        x[0]=1;
    }

    hugen(char *s)
    {
    int i;
    x[0]=strlen(s);
    for (i=1;i<=x[0];i++)
        x[i]=s[x[0]-i]-'0';
}

   long long operator % (long long k)
    {
    int i;
    long long r=0;
    for (i=x[0];i>=1;i--)
    {
        r=r*10+x[i];
        r=r%k;
    }
    return r;
    }
    hugen operator + (long long k)
    {
        hugen temp;
        int nr,v[20];
        for(nr=1;k>=1;nr++)
        {
            v[nr]=k%10;
            k=k/10;
        }
        temp.x[0]=(x[0]>nr)?x[0]:nr;
        int tr=0,aux;
        for( int i=1;i<=temp.x[0];++i)
        {
            aux=x[i]+v[i]+tr;
            temp.x[i]=aux%10;
            tr=aux/10;
        }
        if(tr)
        temp.x[++temp.x[0]]=tr;
        return temp;


    }

    void print()
    {
        for(int i=x[0];i>=1;--i)
        printf("%d",x[i]);
        printf("\n");
    }
};
int main()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    long long d,r;

     gets(s);
    hugen n(s);

    scanf("%lld",&d);
    r=n%d;
    n=n+(d-r);
    n.print();
}