Pentru un număr dat cu k
cifre c1c2…ck, se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială ci, la o cifră finală cj, deplasarea din cifră în cifră spre dreapta de ci ori (1≤i,j≤k
). Dacă pe parcursul deplasării s-a ajuns la cifra ck, se continuă deplasarea circulară spre dreapta cu cifra c1.
Un număr cu k
cifre se numeşte număr „circular” dacă îndeplineşte următoarele două cerinţe:
- toate cifrele sunt nenule;
- pornind de la cifra c1, aplicând algoritmul de deplasare circulară spre dreapta de exact
k
ori, se ajunge din nou la c1, fiecare dintre cifrele numărului fiind exact o singură dată cifră iniţială.
De exemplu, numărul2396
este un număr “circular”, pentru că are doar cifre nenule şi algoritmul de deplasare circulară spre dreapta se aplică astfel:
1. Se porneşte de la cifra iniţială2
(2 3 9 6
) şi se numără două cifre spre dreapta, ajungând la cifra finală9
:2 3 9 6
.
2. Se porneşte de la cifra iniţială9
şi se numără nouă cifre spre dreapta, ajungând la cifra finală6
:2 3 9 6
.
3. Se porneşte de la cifra iniţială6
şi se numără şase cifre spre dreapta, ajungând la cifra finală3
:2 3 9 6
.
4. Se porneşte de la cifra iniţială3
şi se numără trei cifre spre dreapta, ajungând la cifra finală2
:2 3 9 6
.
Astfel, se ajunge la prima cifră din număr, adică la cifra2
, după exact4
aplicări ale algoritmului, iar fiecare dintre cifrele numărului este exact o dată cifră iniţială.
Cerința
Scrieţi un program care citeşte numărul natural nenul n
, apoi numerele naturale x1,x2,…,xn, şi determină:
a) 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;
b) un şir a1,a2,…,an de n
numere naturale pentru care un element ai(1≤i≤n
)se calculează astfel:
- este egal cu xi , dacă xi este număr circular;
- este numărul cel mai apropiat de xi (număr mai mare sau mai mic decât xi), cu proprietatea că este număr circular; dacă pentru un număr din şir se identifică un număr circular
y
, y>xi şi un număr circularz
,z<
xi, pentru care y–xi=
xi–z, atunci se va alege număruly
.
Date de intrare
Fişierul numar.in
conţine pe prima linie numărul n
, iar pe următoarele n
linii numerele naturale x1,x2,…,xn.
Date de ieșire
Fişierul numar.out
va conţine pe prima linie un număr natural determinat conform cerinţei a), iar pe următoarele n
linii şirul de numere determinat conform cerinţei de la punctul b), fiecare număr pe câte un rând.
Restricții și precizări
0 < n < 100
9 <
xi< 999589
,1 ≤ i ≤ n
Exemplu:
numar.in
5 15 123 1972 222 515
numar.out
515 15 117 1959 222 522
Explicație
a) 515
este cel mai mare număr dintre cele cinci numere citite, număr ce conţine o cifră care apare de minimum două ori.
b) Pentru 15
: de la cifra iniţială 1
, se numără o cifră şi se ajunge la cifra finală 5
, apoi începând de la cifra 5
ca cifră iniţială, se numără cinci cifre şi se ajunge la cifra finală 1
. Astfel cifrele 1
, 5
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.