Numerele mari (Big Numbers) sunt numere care depasesc limitele tipurilor de date standard din limbajele de programare (de exemplu, in C++, tipul long long int poate stoca pana la aproximativ 9.22 * 10^18). In problemele de informatica, frecvent intalnim calcule cu numere care au sute sau mii de cifre, cum ar fi factorialul lui 1000 (1000! are peste 2500 de cifre). Pentru a manipula astfel de numere, se folosesc siruri de caractere (stringuri) sau vectori de cifre.
Operatia de baza este reprezentarea: fiecare cifra a numarului se stocheaza intr-un element al unui vector (de obicei in ordine inversa, pentru a usura efectuarea calculelor cu transport). Adunarea se face cifra cu cifra, de la dreapta la stanga, pastrand transportul. Inmultirea unui numar mare cu un numar mic se realizeaza prin inmultirea fiecarei cifre si gestionarea transportului, iar inmultirea a doua numere mari se face prin metoda manuala (inmultirea fiecarei cifre a primului cu fiecare cifra a celui de-al doilea, urmata de adunare cu deplasare).
Factorialul se calculeaza iterativ, inmultind numarul mare curent cu numerele naturale succesive, pana la N. Eficienta algoritmilor se masoara in complexitate: adunarea are O(n), inmultirea cu un numar mic O(n), iar inmultirea a doua numere mari O(n*m). Pentru factorial, complexitatea totala este O(N^2) in cazul naiv, dar se poate optimiza.
Este esential sa se acorde atentie gestionarii memoriei si inversarii ordinii cifrelor la afisare.
Concepte cheie: Reprezentarea numerelor mari in vectori (cifra cu cifra, ordine inversa), Adunarea a doua numere mari cu gestionarea transportului, Inmultirea unui numar mare cu un numar mic si inmultirea a doua numere mari (metoda manuala), Calculul factorialului prin inmultiri repetate cu numere mici, Complexitatea algoritmilor de operatii cu numere mari
Vrei exerciții pe lecția asta + AI care te ajută pas cu pas?
Cont gratuit — 20 întrebări AI/zi, exerciții nelimitate.