3734 - Formula1: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 7: Line 7:


== Date de intrare ==
== Date de intrare ==
Fișierul de intrare formula1.in 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.
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 formula1.out 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.
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 ==

Revision as of 17:09, 1 December 2023

Cerința

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.

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

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

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

  • 1 ⩽ K ⩽ 100.000
  • 1 ⩽ N ⩽ 500.000

Exemplu 1

Intrare
formula1in.txt
1
3 4
Ieșire
formula1out.txt
25


Exemplu 2

Intrare
formula1in.txt
2
3 4
Ieșire
formula1out.txt
81


Exemplu 3

Intrare
formula1in.txt
1
100.001 500.001
Ieșire
Restrictii neindeplinite pentru K sau N


Rezolvare

<syntaxhighlight lang="python" line>

  1. 3734 - Formula1

def verifica_restrictii(numarul_masinii, primele_masini_din_concurs):

   if not (1 <= numarul_masinii <= 100000 and 1 <= primele_masini_din_concurs <= 500000):
       print("Restrictii neindeplinite pentru numarul_masinii sau primele_masini_din_concurs")


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__":

   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>