De ce contează?
Ai o cutie cu combinație: 3-7-4. Ca să o deschizi, introduci cifrele una câte una, de la dreapta la stânga. Calculatorul face exact același lucru cu numărul 374: împarte la 10 și ia restul — iar ce pare complicat devine pur mecanic.
Ce sunt cifrele unui număr?
Orice număr natural este format din cifre: 374 are cifrele 3, 7 și 4. În programare nu ai acces direct la „poziția" cifrelor — trebuie să le extragi una câte una, de la dreapta la stânga, folosind două operații simple.
Instrumentele de bază:
| Operație | Efect pe n = 374 | Rezultat |
|---|---|---|
n % 10 | Ultima cifră | 4 |
n / 10 | Elimină ultima cifră | 37 |
Numărul 374 văzut ca o secvență de cifre:
| cifra | 3 | 7 | 4 |
| pozitie | 0 | 1 | 2 |
Algoritmul: parcurgerea cifrelor
Repetăm doi pași cât timp n > 0:
- Extragem ultima cifră:
cifra = n % 10 - O eliminăm:
n /= 10
Urmărește cum evoluează n = 374:
n = 374 → cifra = 4, n = 37
n = 37 → cifra = 7, n = 3
n = 3 → cifra = 3, n = 0
STOP (n == 0)Cifrele sunt extrase de la dreapta la stânga — de la unități spre cifra cea mai semnificativă. Ține cont de asta când ordinea contează în problemă: dacă ai nevoie de cifre în ordine normală, stochează-le într-un vector și parcurge-l invers.
Implementare C++
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n == 0) {
cout << 0 << endl; // caz special: 0 are o singura cifra
return 0;
}
while (n > 0) {
int cifra = n % 10; // extrage ultima cifra
cout << cifra << " ";
n /= 10; // elimina ultima cifra
}
cout << endl;
return 0;
}Exemplu de rulare: Input 374 → Output 4 7 3
Complexitate
| Caz | Timp | Spațiu |
|---|---|---|
| Număr cu d cifre | O(log n) | O(1) |
Un număr n are ⌊log₁₀(n)⌋ + 1 cifre, deci bucla rulează de ordinul log(n) ori — extrem de rapid.
Greșeala 1: Uiți cazul n = 0. Bucla while(n > 0) nu se execută deloc pentru 0, deci nu afișezi nimic. Tratează n == 0 separat.
Greșeala 2: Folosești int pentru numere mari (ex. 1.000.000.000). int merge până la ~2.1 miliarde. Dacă n poate depăși asta, folosește long long.
Greșeala 3: Crezi că cifrele ies în ordinea „normală" (stânga-dreapta). Ies de la dreapta la stânga. Dacă vrei ordinea inversă, stochează-le într-un vector și afișează în sens invers.