1943 - Bacterie: Difference between revisions
Pagină nouă: == Cerința == O echipă de arheologi a descoperit o hartă străveche a Ținutului de Nord, care era locuit de o civilizație condusă după reguli matematice foarte riguroase. Conform acestei hărți, Ținutul de Nord era împărțit în n rânduri a câte m comitate, fiecare comitat ocupând o suprafață pătrată de un hectar. Însă descoperirile au mai arătat că această civilizație a fost atacată de la sud-vest de o bacterie periculoasă, ce a acționat astfel:... |
No edit summary |
||
Line 54: | Line 54: | ||
# Citire din fișierul de intrare | # Citire din fișierul de intrare | ||
with open(" | with open("bacteriein.txt", "r") as file_in: | ||
n, m = map(int, file_in.readline().split()) | n, m = map(int, file_in.readline().split()) | ||
# Calcul și scriere în fișierul de ieșire | # Calcul și scriere în fișierul de ieșire | ||
with open(" | with open("bacterieout.txt", "w") as file_out: | ||
rezultat = numar_comitate_ramase_neinfectate(n, m) | rezultat = numar_comitate_ramase_neinfectate(n, m) | ||
file_out.write(str(rezultat)) | file_out.write(str(rezultat)) | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 17:03, 1 December 2023
Cerința
O echipă de arheologi a descoperit o hartă străveche a Ținutului de Nord, care era locuit de o civilizație condusă după reguli matematice foarte riguroase. Conform acestei hărți, Ținutul de Nord era împărțit în n rânduri a câte m comitate, fiecare comitat ocupând o suprafață pătrată de un hectar.
Însă descoperirile au mai arătat că această civilizație a fost atacată de la sud-vest de o bacterie periculoasă, ce a acționat astfel: în primul an, a infectat comitatul din colțul din stânga jos al hărții, în al doilea an a infectat cele două comitate vecine cu primul, în al treilea an a infectat cele trei comitate vecine cu anterioarele două și așa mai departe, infecția oprindu-se când bacteria a ajuns la marginea de sus sau la marginea din dreapta a hărții
- Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.
Date de intrare
Fișierul de intrare bacterie.in conține separate printr-un spaţiu, n și m, dimensiunile hărții.
Date de ieșire
Fișierul de ieșire bacterie.out va conține numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.
Restricții și precizări
- 1 ⩽ n ⩽ 1.000.000.000
- 1 ⩽ m ⩽ 1.000.000.000
Exemplu 1
- Intrare
- bacterie.in
- 3 5
- Ieșire
- bacterie.out
- 9
Exemplu 2
- Intrare
- 1000000001
- 1000000001
- Ieșire
- Dimensiunile hărții trebuie să fie în intervalul specificat!
Rezolvare
<syntaxhighlight lang="python" line>
- 1943 - Bacterie
def verifica_restrictii(n, m):
if not (1 <= n <= 1000000000 and 1 <= m <= 1000000000): print("Dimensiunile hărții trebuie să fie în intervalul specificat!")
def numar_comitate_ramase_neinfectate(n, m):
verifica_restrictii(n, m)
total_comitate = n * m infectate = 0 an = 1
while an <= n: infectate += an an += 1 comitate_ramase = total_comitate - infectate return comitate_ramase
- Citire din fișierul de intrare
with open("bacteriein.txt", "r") as file_in:
n, m = map(int, file_in.readline().split())
- Calcul și scriere în fișierul de ieșire
with open("bacterieout.txt", "w") as file_out:
rezultat = numar_comitate_ramase_neinfectate(n, m) file_out.write(str(rezultat))
</syntaxhighlight>