Problemele cu cifrele unui număr natural sunt printre primele teme abordate la începutul studiului informaticii la școală. Deși par aproape inutile, problemele cu cifrele unui număr au rolul de a te obișnui cu împărțirea întreagă (ce presupune obținerea unui cât și a unui rest) și cu reprezentarea numerelor în baza $10$. Soluțiile sunt foarte scurte, așa că sper că nu e nevoie să scriu programele complete, ci doar secvențele de cod importante.

Problema 1.

Se dă un număr natural $n$. Să se afișeze ultima sa cifră.

Cam la asta se reduc majoritatea problemelor cu cifrele unui număr. Un număr natural de forma $\overline{a_{0}a_{1} \ldots a_{m-1}}$ este egal cu $a_{0} \cdot 10^{m-1}+a_{1} \cdot 10^{m-2}+ \cdots +a_{m-1} \cdot 10^{0}$. Observăm că, din această sumă, doar ultimul termen (care reprezintă ultima cifră) nu este un multiplu nenul de $10$, așa că prin împărțirea numărului la $10$, restul obținut va fi chiar ultima sa cifră.

Problema 2.

Se dă un număr natural $n$. Să se afișeze numărul format prim eliminarea ultimei sale cifre.

Ne vom folosi din nou de forma unui număr natural scris în baza $10$, din care se deduce că împărțirea lui $n$ la $10$ va produce câtul $a_{0} \cdot 10^{m-2}+a_{1} \cdot 10^{m-3}+ \cdots +a_{m-2} \cdot 10^{0}$. Fiecare termen devine de $10$ ori mai mic, iar ultimul dispare, numărul obținut find practic cel cerut.

Problema 3.

Se dă un număr natural $n$. Să se afișeze numărul format din ultimele $k$ cifre ale lui $n$.

Vom generaliza problema 1. Restul împărțirii lui $n$ la $10$ este ultima sa cifră, restul împărțirii lui $n$ la $100$ este numărul format din ultimele sale două cifre, etc. Așadar, trebuie să calculăm restul împărțirii lui $n$ la $10^k$.

Problema 4.

Se dă un număr natural $n$. Să se afișeze numărul format prin eliminarea ultimelor $k$ cifre ale lui $n$.

Procedăm ca la problema 2. Dacă restul împărțirii lui $n$ la $10^k$ este numărul format din ultimele $k$ cifre, atunci câtul împărțirii este numărul format prin eliminarea acelor cifre.

Problema 5.

Se dă un număr natural $n$. Să se afișeze a $k$-a cifră a sa, considerându-le numerotate de la 1, de la stânga la dreapta.

Folosind ce am învățat până acum, putem calcula numărul format din primele $k$ cifre (prin eliminarea ultimelor $m-k$). Din acesta avem nevoie doar de ultima cifră, deci îi calculăm restul împărțirii la $10$.

Problema 6.

Se dă un număr natural $n$. Să se calculeze numărul lui de cifre.

Soluția este să împărțim numărul la $10$ până când acesta devine $0$, iar la fiecare pas să incrementăm numărul de cifre. De exemplu, la pasul 0 avem numărul $618$, la pasul 1 avem $61$, la pasul 2 avem $6$, la pasul 3 avem $0$, iar aici ne oprim. Numărul de cifre ale lui $618$ este $3$. Vom trata separat cazul $n=0$, pentru că dacă numărul este $0$ din start, nu s-ar mai intra în while.

Se observă că, la final, în n nu vom mai avea stocată valoarea inițială a numărului, ci 0. Dacă avem nevoie de aceasta și după calcularea numărului de cifre, îi putem face la început o copie în variabila cpy, și să o prelucrăm în schimb pe aceasta.

Problema 7.

Se dă un număr natural $n$. Să se calculeze suma cifrelor acestuia.

În multe probleme cu cifrele unui număr se folosește scheletul de la problema anterioară. Înainte de eliminarea ultimei cifre de la fiecare pas, o putem prelucra accesând-o prin n % 10. În cazul nostru, prelucrarea înseamnă să o adăugăm la sumă.

Problema 8.

Se dă un număr natural $n$. Să se afișeze cifra sa maximă.

Din nou, eliminăm pe rând ultima cifră a lui $n$ până când acesta devine $0$, iar la fiecare pas actualizăm maximul.

Problema 9.

Se dă un număr natural $n$. Să se determine prima sa cifră (cea mai semnificativă cifră).

Putem extrage câte o cifră din $n$ până când $n$ devine mai mic decât $10$, adică până când $n$ devine o cifră. Aceasta va fi, evident, ultima cifră a lui $n$.

Problema 10.

Se dau $k$ cifre. Să se construiască numărul natural $n$ format din aceste cifre în ordinea în care sunt date.

La fiecare cifră citită îl vom înmulți pe $n$ cu $10$, pentru a-i face loc cifrei curente, $x$. După înmulțire, $n$ va avea un $0$ la final, iar adunând $x$, $0$-ul va deveni $x$.

Problema 11.

Se dau $k$ cifre. Să se construiască numărul natural $n$ format din aceste cifre în ordinea inversă celei în care sunt date.

Procedăm aproape ca la problema anterioară, numai că vom reține pe parcurs și o putere a lui $10$ ($10^i$). La fiecare pas vom înmulți cifra curentă cu această putere, adăugând la finalul lui $x$ $i$ zerouri ($i$ fiind egal și cu numărul de cifre ale lui $n$ la pasul respectiv). Astfel, putem adăuga $n$-ul vechi la acest număr, formând un nou $n$.

Problema 12.

Se dă un număr natural $n$. Să se calculeze răsturnatul (oglinditul) său. Răsturnatul unui număr este numărul format prin scrierea în ordine inversă a cifrelor sale. De exemplu, răsturnatul lui $618$ este $816$.

Aici vom combina problemele 7 și 10. Pe măsură ce eliminăm câte o cifră din $n$, o adăugăm la răsturnatul lui $n$, pe care îl vom nota cu $m$.

Problema 13.

Se dă un număr natural $n$. Să se determine dacă $n$ este un palindrom. Un număr palindrom este un număr care citit atât de la dreapta la stânga, cât și de la stânga la dreapta, este același.

Cu alte cuvinte, $n$ este palindrom dacă $n$ este egal cu răsturnatul său. Vom reține o copie a lui $n$ pe care o vom prelucra pentru a obține răsturnatul ($m$). Apoi, testăm egalitatea dintre $n$ și $m$.

Problema 14.

Se dă un număr natural $n$. Să se determine cifra de control a lui $n$. Cifra de control a unui număr este cifra de control a sumei cifrelor sale, dacă numărul are măcar două cifre. Altfel, este chiar numărul în sine.

Cam așa sună o definiție recursivă a cifrei de control. Altfel spus, cât timp $n$ nu este o cifră, $n$ devine suma cifrelor lui $n$. La final, răspunsul va fi $n$.

Dar putem găsi o soluție mult mai eficientă. Se poate observa că dacă $n$ are cifra de control $c$, atunci toate numerele naturale de forma $n+9k$, cu $k$ întreg, au și ele cifra de control $c$. Asta înseamnă că cifra de control a lui $n$ este restul împărțirii sumei cifrelor sale la $9$ dacă restul este nenul, sau $9$ în caz contrar. Mai multe detalii aici.

Acestea sunt cele mai clasice exerciții cu cifrele unui număr; important este să rețineți cum se extrag cifrele dintr-un număr. Puteți exersa astfel de probleme pe PbInfo; acolo se găsesc și o parte din cele prezentate în acest articol. Dacă aveți vreo problemă legată de cifrele unui număr care vă dă bătăi de cap, nu ezitați să o lăsați într-un comentariu mai jos, pentru a vă ajuta 🙂

Îți place conținutul acestui site?

Dacă vrei să mă susții în întreținerea server-ului și în a scrie mai multe articole de calitate pe acest blog, mă poți ajuta printr-o mică donație. Află aici cum o poți face!