Pentru un număr dat cu cifre , se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială , la o cifră finală , deplasarea din cifră în cifră spre dreapta de ori . Dacă pe parcursul deplasării s-a ajuns la cifra , se continuă deplasarea circulară spre dreapta cu cifra .
Un număr cu cifre se numeşte număr „circular” dacă îndeplineşte următoarele două cerinţe:
- toate cifrele sunt nenule
- pornind de la cifra , aplicând algoritmul de deplasare circulară spre dreapta de exact ori, se ajunge din nou la , fiecare dintre cifrele numărului fiind exact o singură dată cifră iniţială
De exemplu, numărul este un număr “circular”, pentru că are doar cifre nenule şi algoritmul de deplasare circulară spre dreapta se aplică astfel:
- Se porneşte de la cifra iniţială şi se numără două cifre spre dreapta, ajungând la cifra finală : .
- Se porneşte de la cifra iniţială şi se numără nouă cifre spre dreapta, ajungând la cifra finală : .
- Se porneşte de la cifra iniţială şi se numără şase cifre spre dreapta, ajungând la cifra finală : .
- Se porneşte de la cifra iniţială şi se numără trei cifre spre dreapta, ajungând la cifra finală : .
Astfel, se ajunge la prima cifră din număr, adică la cifra , după exact aplicări ale algoritmului, iar fiecare dintre cifrele numărului este exact o dată cifră iniţială.
Cerinţă
Scrieţi un program care citeşte numărul natural nenul , apoi numerele naturale , şi determină:
- cel mai mare număr din şir în care există cel puţin o cifră care apare de minimum două ori, iar în cazul în care în şir nu există un astfel de număr, se va afişa cel mai mare număr din şir;
- un şir de numere naturale pentru care un element se calculează astfel:
- este egal cu , dacă este număr circular
- este numărul cel mai apropiat de (număr mai mare sau mai mic decât ), cu proprietatea că este număr circular dacă pentru un număr din şir se identifică un număr circular , şi un număr circular , , pentru care , atunci se va alege numărul .
Date de intrare
Fişierul de intrare numar.in
conţine pe prima linie numărul , iar pe următoarele n linii numerele naturale .
Date de ieşire
Fişierul de ieşire numar.out
va conţine pe prima linie un număr natural determinat conform cerinţei , iar pe următoarele linii şirul de numere determinat conform cerinţei de la punctul , fiecare număr pe câte un rând.
Restricţii şi precizări
- ,
- pentru rezolvarea corectă a cerinţei se obţine din punctaj, iar pentru rezolvarea corectă a cerinţei se obţine din punctaj.
Exemplu
numar.in
5
15
123
1972
222
515
numar.out
515
15
117
1959
222
522
Explicaţie
este cel mai mare număr dintre cele cinci numere citite, număr ce conţine o cifră care apare de minimum două ori
Pentru : de la cifra iniţială , se numără o cifră şi se ajunge la cifra finală , apoi începând de la cifra ca cifră iniţială, se numără cinci cifre şi se ajunge la cifra finală . Astfel cifrele , sunt o singură dată cifre iniţiale şi după două aplicări ale algoritmului de deplasare se ajunge la prima cifră, deci 15 este număr circular.
Pentru : de la cifra iniţială , se numără o cifră şi se ajunge la cifra finală , apoi începând de la cifra ca cifră iniţială, se numără două cifre şi se ajunge la cifra finală . Astfel, se ajunge din nou la prima cifră, însă algoritmul de deplasare s-a aplicat doar de două ori şi nu trei ori, iar cifra nu a fost cifră iniţială. Ca urmare, nu este număr circular. Se determină cele două numere circulare, şi , cel mai apropiat de dintre ele fiind .
Cu celelalte numere se procedează în acelaşi mod.