== include(page="template/taskheader" task_id="numar") ==
Poveste și cerință...
Pentru un număr dat cu $k$ cifre $c[~1~]c[~2~] … c[~k~]$ , se numește deplasare circulară spre dreapta de la o cifră inițială $c[~i~]$, deplasarea din cifră în cifră spre dreapta de $c[~i~]$ ori ([$1 ≤ i ≤ k$]). Dacă pe parcursul deplasării s-a ajuns la cifra $c[~k~]$, se continuă deplasarea circulară spre dreapta cu cifra $c[~1~]$.
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 $c[~1~]$, aplicând algoritmul de deplasare circulară spre dreapta de exact $k$ ori, se ajunge din nou la $c[~1~]$, fiecare dintre cifrele numărului fiind exact o singură dată cifră inițială.
De exemplu, numărul $2396$ 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ă 2 (2 3 9 6) și se numără două cifre spre dreapta, ajungând la cifra finală 9: 2 3 9 6.
# 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.
# 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.
# 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 cifra [$2$], după exact $4$ aplicări ale algoritmului, iar fiecare dintre cifrele numărului este exact o dată cifră inițială.
h2. Cerință
Scrieți un program care citește numărul natural nenul [$n$], apoi numerele naturale $x[~1~], x[~2~], ..., x[~n~]$, și determină:
a) cel mai mare număr din șir în care există cel puțin o cifră care apare de minimum două ori; î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 $a[~1~], a[~2~], ..., a[~n~]$ de $n$ numere naturale pentru care un element $a[~i~]$ ([$1 ≤ i ≤ n$]) se calculează astfel:
* este egal cu $x[~i~]$, dacă $x[~i~]$ este număr circular;
* este numărul cel mai apropiat de $x[~i~]$ (număr mai mare sau mai mic decât $x[~i~]$), cu proprietatea că este număr circular; dacă pentru un număr din șir se identifică un număr circular [$y$], $y > x[~i~]$ și un număr circular [$z$], $z < x[~i~]$, pentru care $y-x[~i~] = x[~i~]-z$, atunci se va alege numărul [$y$].
h2. Date de intrare
Fișierul de intrare $numar.in$ ...
Fișierul de intrare $numar.in$ conține pe prima linie numărul [$n$], iar pe următoarele $n$ linii numerele naturale $x[~1~], x[~2~], ..., x[~n~]$.
h2. Date de ieșire
În fișierul de ieșire $numar.out$ ...
Fișierul de ieșire $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.
h2. Restricții
* $... ≤ ... ≤ ...$
* $0 < n < 100$
* $9 < x[~i~] < 999589, 1 ≤ i ≤ n$
h2. Exemplu
table(example).
|_. numar.in |_. numar.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicație
...
|_. numar.in |_. numar.out |_. Explicație |
| 5
15
123
1972
222
515
| 515
15
117
1959
222
522
| 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.
Pentru 123: de la cifra inițială 1, se numără o cifră și se ajunge la
cifra finală 2, apoi începând de la cifra 2 ca cifră inițială, se numără
două cifre și se ajunge la cifra finală 1. 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 3 nu a fost cifră inițială. Ca urmare, 123 nu este
număr circular. Se determină cele două numere circulare, y=141 și z=117,
cel mai apropiat de 123 dintre ele fiind 117.
Cu celelalte numere se procedează în același mod.
|
== include(page="template/taskfooter" task_id="numar") ==
== include(page="template/taskfooter" task_id="numar") ==