Cod sursa(job #2076844)

Utilizator _DanielArvat Ovidiu Daniel _Daniel Data 27 noiembrie 2017 11:18:58
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

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

typedef int Huge;

unsigned long long D, REST;
int v[1000100], aa[1000], k, kk;
char c[1000100];

void adunare(Huge a[], Huge b[])
{
    int T=0;

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

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

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

int impartire(Huge a[], unsigned long long nr)
{
    int T=0;

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

    return T;
}

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

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

    v[0]=k;

    fin >> D;

    REST=D-impartire(v,D);

    while(REST)
    {
        aa[++aa[0]]=REST%10;
        REST/=10;
    }

    adunare(v,aa);

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

    return 0;
}