1045 - Imprimanta: Difference between revisions
Pop Giulia (talk | contribs) Pagină nouă: ==Enunt== Cif-Oji6 este o imprimantă matriceală numită şi imprimantă cu ace, deoarece tipărirea se realizează prin impactul acelor capului de imprimare pe o bandă cu tuş. Acele sunt aranjate într-o grilă dreptunghiulară formată din 5 rânduri de ace, pe fiecare rând aflându-se la distanţe egale câte 3 ace, aşa cum se observă în figura alăturată. Prin acţionarea diferitelor combinaţii de ace din grilă, se defineşte forma fiecărei cifre ce permite tip... |
Pop Giulia (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/1045/imprimanta] | |||
==Enunt== | ==Enunt== | ||
Cif-Oji6 este o imprimantă matriceală numită şi imprimantă cu ace, deoarece tipărirea se realizează prin impactul acelor capului de imprimare pe o bandă cu tuş. | Cif-Oji6 este o imprimantă matriceală numită şi imprimantă cu ace, deoarece tipărirea se realizează prin impactul acelor capului de imprimare pe o bandă cu tuş. | ||
Line 48: | Line 50: | ||
5* (5 puncte pentru cifra 1) = 25 puncte. | 5* (5 puncte pentru cifra 1) = 25 puncte. | ||
==Solutie== | ==Solutie== | ||
<syntaxhighlight lang="python" line> | |||
def count_points(n, digits): | def count_points(n, digits): | ||
points = 0 | points = 0 | ||
Line 63: | Line 66: | ||
break | break | ||
return min_digit | return min_digit | ||
</syntaxhighlight> |
Latest revision as of 13:02, 20 May 2023
Sursa: [1]
Enunt[edit | edit source]
Cif-Oji6 este o imprimantă matriceală numită şi imprimantă cu ace, deoarece tipărirea se realizează prin impactul acelor capului de imprimare pe o bandă cu tuş. Acele sunt aranjate într-o grilă dreptunghiulară formată din 5 rânduri de ace, pe fiecare rând aflându-se la distanţe egale câte 3 ace, aşa cum se observă în figura alăturată. Prin acţionarea diferitelor combinaţii de ace din grilă, se defineşte forma fiecărei cifre ce permite tipărirea acesteia prin puncte, în felul următor: De exemplu, cifra 2 va fi tipărită prin 11 puncte ca rezultat al acţionării a 11 ace din grilă: din primul rând de ace al grilei se vor acţiona toate cele 3 ace, din următorul rând doar acul din dreapta, apoi de pe următorul rând toate cele 3 ace, apoi acul din stânga de pe penultimul rând iar din ultimul rând toate cele 3 ace.
Cerințe[edit | edit source]
a) Ştiind că imprimanta Cif-Oji6 a tipărit numărul N, determinaţi care este cea mai mare cifră a numărul N pentru care s-a acţionat un număr minim de ace ale grilei. b) Ştiind că imprimanta mai are tuş pe bandă doar pentru imprimarea a K puncte, determinaţi cel mai mare număr natural ce poate fi tipărit prin exact K puncte.
Date de intrare[edit | edit source]
Fișierul de intrare imprimanta.in conține pe prima linie două numere naturale N şi K separate printr-un spaţiu, unde N reprezintă numărul tipărit de imprimantă iar K numărul de puncte pentru care imprimanta mai are tuş.
Date de ieșire[edit | edit source]
Fișierul de ieșire imprimanta.out va conține:
pe prima linie un singur număr natural ce reprezintă cea mai mare cifră a numărul N pentru care s-a acţionat un număr minim de ace ale grilei. pe cea de-a doua linie a fişierului se va scrie cel mai mare număr natural ce poate fi tipărit prin K puncte. Restricții și precizări 10 ≤ N ≤ 1015 14 ≤ K ≤ 100000 Pentru rezolvarea corectă a cerinţei a) se acordă 30% din punctajul fiecărui test iar pentru rezolvarea corectă a cerinţei b) se acordă 70% din punctajul fiecărui test.
Exemplul 1[edit | edit source]
imprimanta.in
2852 16 imprimanta.out
5 74
Explicație[edit | edit source]
Pentru tipărirea cifrei 2 s-au acţionat 11 ace, pentru cifra 8 s-au acţionat 13 ace iar pentru cifra 5 tot 11 ace. Numărul minim de ace pentru tipărirea unei cifre este 11. 5 este cea mai mare cifră a numărului 2852 ce a fost tipărită cu 11 ace. Cel mai mare număr natural ce poate fi tipărit prin 16 puncte este 74 7 puncte (pentru cifra 7) + 9 puncte (pentru cifra 4) = 16 puncte.
Exemplul 2[edit | edit source]
imprimanta.in
88 25 imprimanta.out
8 11111
Explicație[edit | edit source]
Pentru tipărirea cifrei 8 s-au acţionat 13 ace. Cel mai mare număr natural ce poate fi tipărit prin 25 de puncte este 11111 5* (5 puncte pentru cifra 1) = 25 puncte.
Solutie[edit | edit source]
<syntaxhighlight lang="python" line> def count_points(n, digits):
points = 0 for d in str(n): points += digits[d] return points
def find_min_digit(digits):
min_digit = 9 min_ace = float('inf') for i in range(9, -1, -1): if digits[i] <= min_ace: min_ace = digits[i] min_digit = i if digits[i] > min_ace: break return min_digit
</syntaxhighlight>