3734 - Formula1: Difference between revisions
No edit summary |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | == Enunț == | ||
La o cursă de Formula 1, fiecare echipă participantă își construiește propria mașină cu care va concura. Numerotarea mașinilor în concurs este realizată de organizatori cu ajutorul unor stegulețe pătrate ce conțin alternativ, pe fiecare rând (pe orizontală și verticală), pătrățele albe și negre de dimensiuni identice. În figura următoare sunt prezentate, în ordine, stegulețele primelor 4 mașini din concurs. Observăm că fiecare steguleț are cu două rânduri (pe orizontală și verticală) mai mult decât stegulețul precedent, iar în toate cele patru colțuri ale oricărui steguleț se află un pătrățel negru. | La o cursă de Formula 1, fiecare echipă participantă își construiește propria mașină cu care va concura. Numerotarea mașinilor în concurs este realizată de organizatori cu ajutorul unor stegulețe pătrate ce conțin alternativ, pe fiecare rând (pe orizontală și verticală), pătrățele albe și negre de dimensiuni identice. În figura următoare sunt prezentate, în ordine, stegulețele primelor 4 mașini din concurs. Observăm că fiecare steguleț are cu două rânduri (pe orizontală și verticală) mai mult decât stegulețul precedent, iar în toate cele patru colțuri ale oricărui steguleț se află un pătrățel negru. | ||
== Cerința == | |||
Scrieți un program care citește două numere naturale K și N și determină:<br> | |||
1. Câte pătrățele albe și negre sunt în total pe stegulețul mașinii cu numărul K; <br> | |||
2. Notând cu A numărul total de pătrățele albe de pe stegulețele primelor N mașini din concurs, câte pătrățele albe și negre sunt în total pe cel mai mare steguleț care conține cel mult A pătrățele albe. | |||
== Date de intrare == | == Date de intrare == | ||
Fișierul de intrare | Fișierul de intrare formula1in.txt conține pe prima linie un număr natural C. Pentru toate testele de intrare, numărul C poate avea doar valoarea 1 sau valoarea 2 și reprezintă numărul cerinței care trebuie rezolvată. Pe a doua linie a fișierului formula1.in se găsesc, în ordine, numerele naturale K și N. | ||
== Date de ieșire == | == Date de ieșire == | ||
Dacă C = 1, se va rezolva cerința 1. În acest caz, fișierul de ieșire formula1.out va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe stegulețul mașinii cu numărul K. Dacă C = 2, se va rezolva cerința 2. În acest caz, fișierul de ieșire | Dacă C = 1, se va rezolva cerința 1. În acest caz, fișierul de ieșire formula1.out va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe stegulețul mașinii cu numărul K. Dacă C = 2, se va rezolva cerința 2. În acest caz, fișierul de ieșire formula1out.txt va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe cel mai mare steguleț ce conține cel mult A pătrățele albe. | ||
== Restricții și precizări == | == Restricții și precizări == | ||
Line 18: | Line 19: | ||
== Exemplu 1 == | == Exemplu 1 == | ||
; Intrare | ; Intrare | ||
; | ; formula1in.txt | ||
: 1 | : 1 | ||
: 3 4 | : 3 4 | ||
; Ieșire | ; Ieșire | ||
; | : Datele de intrare corespund restricțiilor impuse | ||
; formula1out.txt | |||
: 25 | : 25 | ||
=== Explicație === | |||
Se rezolvă prima cerință și se va folosi doar valoarea K. Stegulețul celei de-a treia mașini are în total 25 de pătrățele albe și negre. | |||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
; formula1in.txt | |||
: 2 | : 2 | ||
: 3 4 | : 3 4 | ||
; Ieșire | ; Ieșire | ||
; | : Datele de intrare corespund restricțiilor impuse | ||
; formula1out.txt | |||
: 81 | : 81 | ||
=== Explicație === | |||
Se rezolvă a doua cerință și se va folosi doar valoarea N. Pe stegulețele primelor 4 mașini apar în total 0 + 4 + 12 + 24 = 40 pătrățele albe. Cel mai mare steguleț care conține cel mult 40 de pătrățele albe aparține mașinii cu numărul 5 care are în total 81 de pătrățele. | |||
== Exemplu 3 == | == Exemplu 3 == | ||
; Intrare | ; Intrare | ||
; formula1in.txt | |||
: 1 | : 1 | ||
: | : 100001 500001 | ||
; Ieșire | ; Ieșire | ||
: | : Datele de intrare NU corespund restricțiilor impuse | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#3734 - Formula1 | #3734 - Formula1 | ||
def verifica_restrictii(numarul_masinii, primele_masini_din_concurs): | def verifica_restrictii(numarul_masinii, primele_masini_din_concurs): | ||
if | if 1 <= numarul_masinii <= 100000 and 1 <= primele_masini_din_concurs <= 500000: | ||
print(" | print("Datele de intrare corespund restricțiilor impuse") | ||
else: | |||
print("Datele de intrare NU corespund restricțiilor impuse") | |||
exit(0) | |||
Line 57: | Line 72: | ||
i += 1 | i += 1 | ||
return numar_patratele(i-1) | return numar_patratele(i-1) | ||
def rezolva_cerinta_1(numarul_masinii): | def rezolva_cerinta_1(numarul_masinii): | ||
return numar_patratele(numarul_masinii) | return numar_patratele(numarul_masinii) | ||
def rezolva_cerinta_2(primele_masini_din_concurs): | def rezolva_cerinta_2(primele_masini_din_concurs): | ||
Line 66: | Line 83: | ||
total_patrate_albe += numar_patratele(i) | total_patrate_albe += numar_patratele(i) | ||
return cel_mai_mare_stegulet(total_patrate_albe) | return cel_mai_mare_stegulet(total_patrate_albe) | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
rezultat = 0 | |||
with open("formula1in.txt", "r") as file_in: | with open("formula1in.txt", "r") as file_in: | ||
caz = int(file_in.readline().strip()) | caz = int(file_in.readline().strip()) | ||
Line 81: | Line 100: | ||
with open("formula1out.txt", "w") as file_out: | with open("formula1out.txt", "w") as file_out: | ||
file_out.write(str(rezultat)) | file_out.write(str(rezultat)) | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 20:57, 10 December 2023
Enunț[edit | edit source]
La o cursă de Formula 1, fiecare echipă participantă își construiește propria mașină cu care va concura. Numerotarea mașinilor în concurs este realizată de organizatori cu ajutorul unor stegulețe pătrate ce conțin alternativ, pe fiecare rând (pe orizontală și verticală), pătrățele albe și negre de dimensiuni identice. În figura următoare sunt prezentate, în ordine, stegulețele primelor 4 mașini din concurs. Observăm că fiecare steguleț are cu două rânduri (pe orizontală și verticală) mai mult decât stegulețul precedent, iar în toate cele patru colțuri ale oricărui steguleț se află un pătrățel negru.
Cerința[edit | edit source]
Scrieți un program care citește două numere naturale K și N și determină:
1. Câte pătrățele albe și negre sunt în total pe stegulețul mașinii cu numărul K;
2. Notând cu A numărul total de pătrățele albe de pe stegulețele primelor N mașini din concurs, câte pătrățele albe și negre sunt în total pe cel mai mare steguleț care conține cel mult A pătrățele albe.
Date de intrare[edit | edit source]
Fișierul de intrare formula1in.txt conține pe prima linie un număr natural C. Pentru toate testele de intrare, numărul C poate avea doar valoarea 1 sau valoarea 2 și reprezintă numărul cerinței care trebuie rezolvată. Pe a doua linie a fișierului formula1.in se găsesc, în ordine, numerele naturale K și N.
Date de ieșire[edit | edit source]
Dacă C = 1, se va rezolva cerința 1. În acest caz, fișierul de ieșire formula1.out va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe stegulețul mașinii cu numărul K. Dacă C = 2, se va rezolva cerința 2. În acest caz, fișierul de ieșire formula1out.txt va conține pe prima linie un număr natural reprezentând numărul total de pătrățele existente pe cel mai mare steguleț ce conține cel mult A pătrățele albe.
Restricții și precizări[edit | edit source]
- 1 ⩽ K ⩽ 100.000
- 1 ⩽ N ⩽ 500.000
Exemplu 1[edit | edit source]
- Intrare
- formula1in.txt
- 1
- 3 4
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- formula1out.txt
- 25
Explicație[edit | edit source]
Se rezolvă prima cerință și se va folosi doar valoarea K. Stegulețul celei de-a treia mașini are în total 25 de pătrățele albe și negre.
Exemplu 2[edit | edit source]
- Intrare
- formula1in.txt
- 2
- 3 4
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- formula1out.txt
- 81
Explicație[edit | edit source]
Se rezolvă a doua cerință și se va folosi doar valoarea N. Pe stegulețele primelor 4 mașini apar în total 0 + 4 + 12 + 24 = 40 pătrățele albe. Cel mai mare steguleț care conține cel mult 40 de pătrățele albe aparține mașinii cu numărul 5 care are în total 81 de pătrățele.
Exemplu 3[edit | edit source]
- Intrare
- formula1in.txt
- 1
- 100001 500001
- Ieșire
- Datele de intrare NU corespund restricțiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3734 - Formula1
def verifica_restrictii(numarul_masinii, primele_masini_din_concurs):
if 1 <= numarul_masinii <= 100000 and 1 <= primele_masini_din_concurs <= 500000: print("Datele de intrare corespund restricțiilor impuse") else: print("Datele de intrare NU corespund restricțiilor impuse") exit(0)
def numar_patratele(numarul_masinii):
return (numarul_masinii+(numarul_masinii-1))**2
def cel_mai_mare_stegulet(numarul_de_patratele_albe):
i = 1 while numar_patratele(i) <= numarul_de_patratele_albe: i += 1 return numar_patratele(i-1)
def rezolva_cerinta_1(numarul_masinii):
return numar_patratele(numarul_masinii)
def rezolva_cerinta_2(primele_masini_din_concurs):
total_patrate_albe = 0 for i in range(1, primele_masini_din_concurs + 1): total_patrate_albe += numar_patratele(i) return cel_mai_mare_stegulet(total_patrate_albe)
if __name__ == "__main__":
rezultat = 0 with open("formula1in.txt", "r") as file_in: caz = int(file_in.readline().strip()) numarul_masinii, primele_masini_din_concurs = map(int, file_in.readline().split())
verifica_restrictii(numarul_masinii, primele_masini_din_concurs)
if caz == 1: rezultat = rezolva_cerinta_1(numarul_masinii) elif caz == 2: rezultat = rezolva_cerinta_2(primele_masini_din_concurs)
with open("formula1out.txt", "w") as file_out: file_out.write(str(rezultat))
</syntaxhighlight>