Sari la conținut
EduCamp
Definitivat2022Problemă15 puncte

Subiectul I, cerința 3

Permutarea circulară a cifrelor

Subprogramul care rotește cifrele unui număr spre dreapta și programul C++ care determină cel mai mic număr impar din șirul circular asociat și numărul aparițiilor lui.

Cum se rotesc cifrele spre dreapta

Permutarea circulară către dreapta cu o poziție înseamnă că ultima cifră trece pe prima poziție, iar toate celelalte se deplasează cu o poziție spre dreapta. Din 26147 se obține 72614: cifra 7 a trecut pe prima poziție, iar cifrele 2, 6, 1, 4 și-au păstrat ordinea.

Numărul obținut se calculează din ultima cifră a lui n, adică restul împărțirii lui n la 10, și din numărul rămas, adică câtul împărțirii întregi a lui n la 10.

Ultima cifră trebuie așezată înaintea numărului rămas, deci înmulțită cu puterea lui 10 corespunzătoare numărului de cifre ale acestuia. Pentru 26147: ultima cifră este 7, numărul rămas este 2614, care are patru cifre, deci rezultatul este 7 · 10⁴ + 2614 = 72614.

Cazul lui 20 arată de ce rezultatul poate avea mai puține cifre decât numărul inițial: ultima cifră este 0, numărul rămas este 2, iar rezultatul este 0 · 10 + 2 = 2. Cifra 0, ajunsă pe prima poziție, nu se mai scrie, deci numărul obținut are o singură cifră. Formula de mai sus dă direct valoarea corectă, fără nicio prelucrare suplimentară.

Descrierea algoritmului în limbaj natural

Șirul circular nu se memorează. Numerele se citesc din fișier unul câte unul și se prelucrează pe măsură ce se citesc: pentru fiecare număr se apelează subprogramul circular, care îi rotește cifrele, iar valoarea obținută este termenul corespunzător din șirul circular.

Dacă valoarea obținută este impară, ea se compară cu minimul de până atunci. Se folosesc două variabile: una pentru cel mai mic număr impar întâlnit până în acel moment și una pentru numărul aparițiilor lui. Prima valoare impară găsită devine minimul, iar numărul aparițiilor ei primește valoarea 1. Fiecare valoare impară găsită după aceea se compară cu minimul curent:

  • dacă este mai mică, devine noul minim, iar numărul aparițiilor primește valoarea 1;
  • dacă este egală cu minimul, numărul aparițiilor crește cu 1;
  • dacă este mai mare, valoarea este ignorată.

Fiindcă numărul aparițiilor se reinițializează la găsirea fiecărui minim nou, la sfârșitul parcurgerii cele două variabile conțin exact valoarea minimă și numărul aparițiilor ei, chiar dacă minimul s-a schimbat de mai multe ori pe parcurs.

Dacă în tot șirul circular nu s-a găsit niciun număr impar, se afișează mesajul nu exista. În caz contrar se afișează minimul și numărul aparițiilor lui, separate printr-un spațiu.

Rezolvarea se poate citi pe educamp.ro, la adresa de mai sus.

Ce cuprinde rezolvarea

  1. Cum se rotesc cifrele spre dreapta
  2. Descrierea algoritmului în limbaj natural
  3. Programul
  4. Verificarea pe exemplul din enunț

Vezi rezolvarea ca și cursant

Cel puțin o cerință din fiecare an este disponibilă gratuit și integral. Pentru a citi toate celelalte rezolvări ale disciplinei, te înscrii la cursul de pregătire.

Te înscrii, alegi în cont când începe cursul și plătești prima lună prin transfer bancar. Pentru a vedea mai întâi cum este scrisă o rezolvare, poți reveni la prima cerință a anului.

Acces la suportul de curs

25 RON / lună, fără ședințe

Ce cuprinde:

  • Acces la toate lecțiile disponibile
  • Suport de curs pentru tematica științifică și metodică
  • Exemple, explicații și exerciții
  • Acces la materialele noi adăugate pe platformă
  • Posibilitatea de a adresa întrebări

Poți alege și variante cu ședințe online, în grup sau individuale. Le vezi pe pagina cursului.

Ai întrebări sau o problemă? Scrie-mi pe WhatsApp, la 0745 874 576.

Înscrie-te Alte varianteCum plătești Login

Actualizat: 23 septembrie 2026