Cod sursa(job #2673341)

Utilizator Vasile_AndreiVasile Andrei Calin Vasile_Andrei Data 16 noiembrie 2020 16:28:28
Problema Next Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

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

long long impartire(int a[], long long d)
{
    long long r=0;
    for(int i=a[0];i>0;i--)
    {
        a[i]=r*10+a[i];
        r=a[i]%d;
        a[i]/=d;
    }
    return r;
}

void citire(int a[])
{
    char s[1000001];
    in.get(s, 1000000);
    for(int i=strlen(s)-1;i>=0;i--)
        a[++a[0]]=s[i]-'0';
}

void copiere(int a[], int b[])
{
    a[0]=b[0];
    for(int i=1;i<=a[0];i++)
        a[i]=b[i];
}

void adunare(int a[], long long x)
{
    int i=1;
    while(x)
    {
        a[i]=a[i]+x%10;
        x/=10;
        i++;
    }i--;
    if(i>a[0])a[0]=x;
    for(i=1;i<a[0];i++)
      {
          a[i+1]+=a[i]/10;
          a[i]%=10;
      }
    if(a[a[0]+1]>0)a[0]++;
}

void afisare(int a[])
{
    for(int i=a[0];i>0;i--)
        out<<a[i];
    out<<'\n';
}

int a[1000001],b[1000001];
long long d,r;

int main()
{
    citire(a);
    in>>d;
    copiere(b, a);
    r=impartire(a, d);
    adunare(b, d-r);
    afisare(b);
    return 0;
}