Cod sursa(job #2964420)

Utilizator dragutamihai1234Draguta Mihai dragutamihai1234 Data 12 ianuarie 2023 22:47:27
Problema Next Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
using namespace std;

int v[1000000];

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

void impartire(int A[], long long B, long long &T)
{
    T = 0;
    for(int i = A[0]; i >= 1; i--)
    {
        T = T * 10 + A[i];
        A[i] = T / B;
        T %= B;
    }
    while(A[0] > 1 && A[A[0]] == 0)
        A[0]--;
}

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

int main()
{
    ifstream cin("next.in");
    ofstream cout("next.out");
    long long D, T;
    string s;
    cin >> s;
    v[0] = s.size();
    for(int i = 0; i < v[0]; i++)
    {
        v[v[0] - i] = s[i] - '0';
    }
    cin >> D;
    impartire(v, D, T);
    if(T != 0)
        adunare(v, 1);
    inmultire(v, D);
    for(int i = v[0]; i >= 1; i--)
        cout << v[i];
    return 0;
}