0301 - Frecventa1
Sursa: -Frecventa1
Cerinţa
Se dau n numere naturale cu cel mult două cifre fiecare. Afişaţi valorile distincte în ordinea descrescătoare a numărului de apariţii.
Date de intrare
Fișierul de intrare frecventa1.in conţine pe prima linie numărul n; urmează cele n numere, dispuse pe mai multe linii şi separate prin spaţii.
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 frecventa1.out va conţine pe prima linie valorile distincte dintre cele n, în ordinea descrescătoare a numărului de apariţii. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricţii şi precizări
- 1 ≤ n ≤ 100.000
- dacă două valori apar de acelaşi număr de ori, se va afişa mai întâi valoarea mai mică
Exemple
Exemplul 1
- frecventa1.in
- 8
- 3 19 3 65 3 19 14 3
- Ieșire
- Datele sunt corecte.
- frecventa1.out
- 3 19 14 65
Exemplul 2
- frecventa1.in
- 4
- 10 10 1 12
- Ieșire
- Datele sunt corecte.
- frecventa1.out
- 10 1 12
Exemplul 3
- frecventa1.in
- 5
- 22241 12 1234 12 236
- Ieșire
- Datele nu sunt comform restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 0301 Frecventa1
def frecventa(vector):
f = open("frecventa1.out", "w")
aparitii = [(i, vector[i]) for i in range(100) if vector[i] > 0]
aparitii.sort(key=lambda x: x[1], reverse=True)
for i in range(len(aparitii)):
f.write(str(aparitii[i][0]) + " ")
def conform_restrictiilor():
vector = list()
with open('frecventa1.in') as f:
lines = f.readlines()
for line in lines:
for c in line.split():
if c.isdigit() is True:
vector.append(int(c))
n = vector[0]
vector_aparitii = [0] * 100
if n < 1 or n > 100000:
print("Datele nu sunt comform restricțiilor impuse.")
exit()
vector = vector[1:]
for x in vector:
if x < 0 or x >= 100:
print("Datele nu sunt comform restricțiilor impuse.")
exit()
vector_aparitii[x] += 1
print("Datele sunt corecte.")
return vector_aparitii
if __name__ == '__main__':
vector = conform_restrictiilor() frecventa(vector)
</syntaxhighlight>