Cod sursa(job #1748250)

Utilizator gavra_bogdanBogdan Gavra gavra_bogdan Data 26 august 2016 11:52:44
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAXDIGITS=1000005;
char s[1000005];
class HugeN
{
private:
    int x[NMAXDIGITS];
public:
    HugeN()
    {
        memset(x,0,sizeof(x));
        x[0]=1;
    }
    HugeN(char*s)
    {
        gets(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)
{
    long long r=0;
    for(int 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/=10;
	}
	while(tr)
	{
		x[0]++;
		x[x[0]]=tr%10;
		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;
}