Cod sursa(job #1748273)

Utilizator nume12Andrei Moldovan nume12 Data 26 august 2016 11:58:03
Problema Next Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int NMAXDIGITS= 1000005;
char s[1000005];
class HugeN
{
private :
    int x[NMAXDIGITS];
public:
    HugeN();
HugeN(char*s)
{
    int l =strlen(s);
    memset(x,0,sizeof(x));
    int i;
    x[0]=l;
    for(i = l - 1 ; i >= 0;i--)
    {
        x[l-i]=s[i]-48;
    }
}
void print()
{
   for(int i = x[0] ; i >= 1 ; i--)
   {
       printf("%d",x[i]);
   }
   printf("\n");
};
HugeN&operator+=( long long k);
 long long operator%( long long k);
};
HugeN::HugeN()
{
    memset(x,0,sizeof(x));
    x[0]=1;
}
HugeN& HugeN::operator+=( long long  k)
{
    int i ;
    long long tr = k , aux;
    for(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;
}
 long long  HugeN ::operator%( long long k)
{
    long long aux=0;
    int i;
    for(i = x[0]; i >= 1 ; i--)
    {
        aux=(aux*10+x[i]);
        aux=aux%k;
    }
    return aux;
}

int main()
{


    freopen("next.in","r",stdin);

    freopen("next.out","w",stdout);
    gets(s);
     long long k;
    scanf("%lld",&k);
    HugeN N(s);
    long long r,b;
    r=N%k;
    b=k-r;
    if(r)N+=b;
    N.print();
    return 0;
}
/// tema +  si -;