Cod sursa(job #2440672)

Utilizator andrei_laurentiuRadu Andrei-Laurentiu andrei_laurentiu Data 18 iulie 2019 22:50:45
Problema Next Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <fstream>
#include <cstring>
#include <algorithm>

using namespace std;

const int MAX_DIGITS=2147483647;

ifstream fin("next.in");
ofstream fout("next.out");

class HugeN
{
    private: int x[MAX_DIGITS];
    public:
        HugeN()
        {
            memset(x,0,sizeof(x));
            x[0]=1;
        }
        HugeN(char s[MAX_DIGITS])
        {
            int i,n;
            n=strlen(s);
            memset(x,0,sizeof(x));
            x[0]=n;
            for(i=n-1;i>=0;i--)
                x[n-i]=s[i]-'0';
        }
        void print()
        {
            int i;
            for(i=x[0];i>=1;i--)
            {
                fout<<x[i];
            }
            fout<<endl;
        }
        HugeN operator +=(long long k)
        {
            long long tr=k;
            for(int i=1;i<=x[0];i++)
            {
                tr=x[i]+tr;
                x[i]=tr%10;
                tr=tr/10;
            }
            while(tr)
            {
                x[0]++;
                x[x[0]]=tr%10;
                tr=tr/10;
            }
            return *this;
        }
        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;
        }
};
int main()
{
    char s[MAX_DIGITS];

    fin.getline(s,MAX_DIGITS);

    HugeN n(s);
    long long d,r;

    fin>>d;

    r=n%d;

    if(r==0)
        n.print();
    else
    {
        d=d-r;
        n+=d;
        n.print();
    }
    return 0;
}