Cod sursa(job #3225605)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 18 aprilie 2024 09:26:52
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#define QED fin.close(); fout.close(); return 0;
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
typedef long long int llong;
#define cin fin
#define cout fout
const int NMAX = 1000005;

int a[NMAX];

void citire(int A[])
{
    char S[NMAX + 1];
    cin >> S;
    A[0] = strlen(S);
    for(int i = 1; i <= A[0]; i++)
        A[i] = S[A[0] - i] - '0';
}

void adunare(int A[], llong B)
{
    llong T = B;
    for(int i = 1; i <= A[0] && T > 0; i++)
    {
        T += A[i];
        A[i] = T % 10;
        T /= 10;
    }
    while(T > 0)
    {
        A[++A[0]] = T % 10;
        T /= 10;
    }
}

void sol(int A[], llong B)
{
    llong T = 0, aux = B;
    for(int i = A[0]; i >= 1; i--)
    {
        T = T * 10 + A[i];
        T %= B;
    }
    if(T != 0)
        adunare(a, aux - T);
}

int main()
{
    citire(a);
    llong b;
    cin >> b;
    sol(a, b);
    for(int i = a[0]; i >= 1; i--)
        cout << a[i];
    QED
}