numar

Time limit: 0.05s Memory limit: 2MB Input: numar.in Output: numar.out

Pentru un număr dat cu kk cifre c1 c2... ck\overline{c_1 \ c_2 ... \ c_k}, se numeşte algoritm de deplasare circulară spre dreapta de la o cifră iniţială cic_i, la o cifră finală cjc_j, deplasarea din cifră în cifră spre dreapta de cic_i ori (1i,jk)(1 \leq i, j \leq k). Dacă pe parcursul deplasării s-a ajuns la cifra ckc_k, se continuă deplasarea circulară spre dreapta cu cifra c1c_1.
Un număr cu kk cifre se numeşte număr „circular” dacă îndeplineşte următoarele două cerinţe:

  • toate cifrele sunt nenule
  • pornind de la cifra c1c_1, aplicând algoritmul de deplasare circulară spre dreapta de exact kk ori, se ajunge din nou la c1c_1, fiecare dintre cifrele numărului fiind exact o singură dată cifră iniţială

De exemplu, numărul 2 3962 \ 396 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)2 (2 \ 3 \ 9 \ 6) şi se numără două cifre spre dreapta, ajungând la cifra finală 99: 2 3 9 62 \ 3 \ 9 \ 6.
  2. Se porneşte de la cifra iniţială 99 şi se numără nouă cifre spre dreapta, ajungând la cifra finală 66: 2 3 9 62 \ 3 \ 9 \ 6.
  3. Se porneşte de la cifra iniţială 66 şi se numără şase cifre spre dreapta, ajungând la cifra finală 33: 2 3 9 62 \ 3 \ 9 \ 6.
  4. Se porneşte de la cifra iniţială 33 şi se numără trei cifre spre dreapta, ajungând la cifra finală 22: 2 3 9 62 \ 3 \ 9 \ 6.

Astfel, se ajunge la prima cifră din număr, adică la cifra 22, după exact 44 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 nn, apoi numerele naturale x1,x2,...,xnx_1, x_2, ..., x_n, şi determină:

  1. 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;
  2. un şir a1,a2,...,ana_1, a_2, ..., a_n de nn numere naturale pentru care un element ai(1in)a_i (1 \leq i \leq n) se calculează astfel:
  • este egal cu xix_i, dacă xix_i este număr circular
  • este numărul cel mai apropiat de xix_i (număr mai mare sau mai mic decât xix_i), cu proprietatea că este număr circular dacă pentru un număr din şir se identifică un număr circular yy, y>xiy > x_i şi un număr circular zz, z<xiz < x_i, pentru care yxi=xizy - x_i = x_i-z, atunci se va alege numărul yy.

Date de intrare

Fişierul de intrare numar.in conţine pe prima linie numărul nn, iar pe următoarele n linii numerele naturale x1,x2,...,xnx_1, x_2, ..., x_n.

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 a)a), iar pe următoarele nn linii şirul de numere determinat conform cerinţei de la punctul b)b), fiecare număr pe câte un rând.

Restricţii şi precizări

  • 0<n<1000 \lt n \lt 100
  • 9<xi<999 5899 \lt x_i \lt 999 \ 589, 1in1 \leq i \leq n
  • pentru rezolvarea corectă a cerinţei 11 se obţine 30%30\% din punctaj, iar pentru rezolvarea corectă a cerinţei 22 se obţine 70%70\% din punctaj.

Exemplu

numar.in

5
15
123
1972
222
515

numar.out

515
15
117
1959
222
522

Explicaţie

1. 5151. \ 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

2.2. Pentru 1515: de la cifra iniţială 11, se numără o cifră şi se ajunge la cifra finală 55, apoi începând de la cifra 55 ca cifră iniţială, se numără cinci cifre şi se ajunge la cifra finală 11. Astfel cifrele 11, 55 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 123123: de la cifra iniţială 11, se numără o cifră şi se ajunge la cifra finală 22, apoi începând de la cifra 22 ca cifră iniţială, se numără două cifre şi se ajunge la cifra finală 11. 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 33 nu a fost cifră iniţială. Ca urmare, 123123 nu este număr circular. Se determină cele două numere circulare, y=141y = 141 şi z=117z = 117, cel mai apropiat de 123123 dintre ele fiind 117117.
Cu celelalte numere se procedează în acelaşi mod.

Log in or sign up to be able to send submissions!