0797 - SubNumar
Sursa: - SubNumar
Explicatie
Un număr natural x, format din exact două cifre, este numit sub-număr al unui număr natural y dacă cifrele lui x apar, în aceeași ordine, pe ranguri consecutive, în numărul y. Exemplu: 21 este sub-număr al lui 12145, al lui 213, al lui 21, dar nu și al lui 123 sau al lui 231.
Cerinţa
Fișierul de intrare subnumar.in conține cel mult 1.000.000 de numere naturale. Se cere să se afișeze în fișierul de ieșire subnumar.out, în ordine descrescătoare, sub-numerele care apar de cele mai multe ori în scrierea numerelor date.
Date de intrare
Fișierul de intrare subnumar.in conține cel mult 1.000.000 de numere naturale cu cel puțin 2 cifre, separate prin câte un spațiu, dispuse pe mai multe linii.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi in fişierul de ieșire subnumar.out va conține pe prima linie valorile cerute, separate prin câte un spațiu. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări
- numerele din fișierul de intrare vor fi din intervalul [10, 1.000.000.000]
Exemple
Exemplul 1
- subnumar.in
- 393 17775787 72194942 12121774
- Ieșire
- Datele sunt corecte.
- subnumar.out
- 77 21
Exemplul 2
- subnumar.in
- 14214 1241 1241 421 514 142312
- Ieșire
- Datele sunt corecte.
- subnumar.out
- 14
Exemplul 3
- subnumar.in
- 9 8 7 1
- Ieșire
- Datele nu sunt comform restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 0797 SubNumar
def subnumar(vector):
subnr = [0] * 100 for i in range(len(vector)): element = vector[i] while element > 9: subnr[element % 100] += 1 element //= 10 max = 0 f = open("subnumar.out", "w") for i in range(10, 99): element = subnr[i] if element > max: max = element for i in range(99, 9, -1): element = subnr[i] if element == max: f.write(str(i)) f.write(" ")
def conform_restrictiilor():
vector = list() vector_verificare = [0] * 1000 with open('subnumar.in') as f: lines = f.readlines() for line in lines: for c in line.split(): if c.isdigit() == True: vector.append(int(c)) if len(vector) > 1000000: print("Datele nu sunt comform restricțiilor impuse.") exit() for x in vector: if x < 10 or x > 1000000000: print("Datele nu sunt comform restricțiilor impuse.") exit() print("Datele sunt corecte.") return vector
if __name__ == '__main__':
vector = conform_restrictiilor() subnumar(vector)
</syntaxhighlight>