Fișierul intrare/ieșire | numar.in, numar.out | Sursă | ONI 2012 clasa a 6-a |
---|---|---|---|
Autor | Roxana Tîmplaru | Adăugată de |
|
Timp de execuție pe test | 0.1 sec | Limită de memorie | 2048 KB |
Scorul tău | N/A | Dificultate |
Vezi soluțiile trimise | Statistici
Număr (clasa a 6-a)
Pentru un număr dat cu k cifre c1c2 … ck , se numește deplasare circulară spre dreapta de la o cifră inițială ci, deplasarea din cifră în cifră spre dreapta de ci ori (1 ≤ i ≤ 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ă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ă.
Cerință
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; î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 circular z, z < xi, pentru care y-xi = xi-z, atunci se va alege numărul y.
Date de intrare
Fișierul de intrare 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 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.
Restricții
- 0 < n < 100
- 9 < xi < 999589, 1 ≤ i ≤ n
Exemplu
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. |