Cod sursa(job #1747973)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 25 august 2016 21:17:41
Problema Next Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define NMAX 1000000
char s[NMAX];

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

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

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