fbpx

Problema #2410 – ProdusXXL – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Numim număr mare un număr care conține prea multe cifre pentru a fi memorat în tipurile existente.

Exemplu

produsxxl.in

20 7 8 5 3 7 6 7 1 4 6 9 9 4 3 4 6 6 9 9 9
25 7 6 3 9 6 3 1 3 6 5 9 5 8 9 1 6 7 9 5 4 5 3 6 5 3

produsxxl.out

599998858371156857510752802116223611839497347

Explicație

78537671469943466999 + 7639631365958916795453653 = 599998858371156857510752802116223611839497347

#include <bits/stdc++.h>
using namespace std;
ifstream cin("produsxxl.in");
ofstream cout("produsxxl.out");

int n , m , cnt , a[105] , b[105] , prod[205];

void citire(int a[] , int n)
{
    for(int i = n ; i >= 1 ; i--)
        cin >> a[i];
}
void afisare(int a[] , int n)
{
    for(int i = n ; i >= 1 ; i--)
        cout << a[i];
}
void inmultire_2nr_mari(int a[] , int b[])
{
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= m ; j++)
            prod[i + j - 1] += a[i] * b[j];
    cnt = n + m - 1;
    int r = 0;
    for(int i = 1 ; i <= cnt ; i++)
    {
        r += prod[i];
        prod[i] = r % 10;
        r /= 10;
    }
    while(r)
    {
        prod[++cnt] = r;
        r /= 10;
    }
}

int main()
{
    cin >> n;
    citire(a , n);
    cin >> m;
    citire(b , m);
    inmultire_2nr_mari(a , b);
    afisare(prod , cnt);
    return 0;
}
Comentarii

S-ar putea sa iti placa