Cod sursa(job #1748255)

Utilizator Alex_AeleneiAlex Aelenei Ioan Alex_Aelenei Data 26 august 2016 11:54:24
Problema Next Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int NMAXDIGITS=10005;
char s[10005];
class HugeN
{
private:
    int x[NMAXDIGITS];
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>=1;--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>=1;--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()
{
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    long long d,r;
    gets(s);
    scanf("%lld",&d);
    HugeN N(s);
    r=N%d;
    if(r)
        N+=d-r;
    N.print();
    return 0;
}