Cod sursa(job #2083552)

Utilizator iDanyelArvat Ovidiu Daniel iDanyel Data 7 decembrie 2017 20:42:01
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define L 10000010
using namespace std;

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

int v[L], a[L], k;
char c[L];

int impartire(int D)
{
    int T=0;

    for(int i=v[0]; i>=1; i--)
    {
        T=T*10+v[i];
        T%=D;
    }

    return T;
}

void adunare()
{
    int T=0;

    if(a[0]>v[0])
        v[0]=a[0];

    for(int i=1; i<=v[0]; i++)
    {
        v[i]+=a[i]+T;
        T=v[i]/10;
        v[i]%=10;
    }

    if(T)
        v[++v[0]]=T;
}

int main()
{
    fin >> c;
    k=strlen(c);

    v[0]=k;

    for(int i=k-1; i>=0; i--)
        v[k-i]=c[i]-'0';

    long long D;
    fin >> D;

    if(impartire(D))
    {
        D=D-impartire(D);

        while(D)
            a[++a[0]]=D%10, D/=10;

        adunare();
    }

    for(int i=v[0]; i>=1; i--)
        fout << v[i];

    return 0;
}