4236 - Bacterie1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei. == Date de intrare == Programul citește de la tastatura numerele '''n m''', dimensiunile hărții. == Date de ieşire == Programul va afișa pe ecran 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''', numere naturale; * aceas...
 
No edit summary
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
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.
== Cerinţa ==
== Cerinţa ==
Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.
Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.
Line 8: Line 11:
* '''1 ≤ n ≤ 1.000.000.000, 1 ≤ m ≤ 1.000.000.000''', numere naturale;
* '''1 ≤ n ≤ 1.000.000.000, 1 ≤ m ≤ 1.000.000.000''', numere naturale;
* aceasta este problema #Bacterie , dar opeațiile de intrare/ieșire se fac cu consola.
* aceasta este problema #Bacterie , dar opeațiile de intrare/ieșire se fac cu consola.
== Exemplu ==
== Exemplul 1 ==
; Intrare
; Intrare
: 3 5
: 3 5
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: 9
: 9
== Exemplul 2 ==
; Intrare
: n
; Ieșire
: Datele introduse nu corespund restricțiilor impuse.
== Explicație ==
== Explicație ==
Harta Ținutului de Nord cuprinde '''3''' rânduri a câte '''5''' comitate fiecare, având în total '''15''' comitate. Expansiunea bacteriei s-a oprit după '''3''' ani, deoarece a atins marginea de sus; au rămas '''9''' comitate neinfectate.
Harta Ținutului de Nord cuprinde '''3''' rânduri a câte '''5''' comitate fiecare, având în total '''15''' comitate. Expansiunea bacteriei s-a oprit după '''3''' ani, deoarece a atins marginea de sus; au rămas '''9''' comitate neinfectate.
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def comitate_neinfectate(n, m):
# 4236 - Bacterie1
def verificare_restrictii(n1, m1):
    # functia de verificare a datelor de intrare
    if 1 <= n1 <= 10**9 and 1 <= m1 <= 10**9:
        return True
    else:
        return False
 
 
def comitate_neinfectate(n1, m1):
     # Numarul total de comitate este n * m
     # Numarul total de comitate este n * m
     total = n * m
     total = n1 * m1
     # Numarul de comitate infectate este egal cu numarul de comitate de pe margini
     # Numarul de comitate infectate este egal cu numarul de comitate de pe margini
     infectate = 2 * (n + m - 5)
     infectate = 2 * (n1 + m1 - 5)
     # Numarul de comitate neinfectate este totalul minus cele infectate
     # Numarul de comitate neinfectate este totalul minus cele infectate
     neinfectate = total - infectate
     neinfectate = total - infectate
     return neinfectate
     return neinfectate


if __name__ == "__main__":
if __name__ == "__main__":
     # Citim datele de intrare
     try:
    n, m = map(int, input().split())
        # Citim datele de intrare
    # Calculam numarul de comitate neinfectate
        n, m = map(int, input().split())
    rezultat = comitate_neinfectate(n, m)
        if verificare_restrictii(n, m):            # verificam datele de intrare
    # Afisam rezultatul
            print("Datele de intrare corespund restrictiilor impuse.")
     print(rezultat)
            # Calculam numarul de comitate neinfectate
            rezultat = comitate_neinfectate(n, m)
            # Afisam rezultatul
            print(rezultat)
        else:
            print("Datele de intrare nu corespund restrictiilor impuse.")
    # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator
    except ValueError:
        print("Datele de intrare nu corespund restrictiilor impuse.")
     except IndexError:
        print("Datele de intrare nu corespund restrictiilor impuse.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 09:10, 16 November 2023

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.

Cerinţa[edit | edit source]

Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.

Date de intrare[edit | edit source]

Programul citește de la tastatura numerele n m, dimensiunile hărții.

Date de ieşire[edit | edit source]

Programul va afișa pe ecran numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1.000.000.000, 1 ≤ m ≤ 1.000.000.000, numere naturale;
  • aceasta este problema #Bacterie , dar opeațiile de intrare/ieșire se fac cu consola.

Exemplul 1[edit | edit source]

Intrare
3 5
Ieșire
Datele introduse corespund restricțiilor impuse.
9

Exemplul 2[edit | edit source]

Intrare
n
Ieșire
Datele introduse nu corespund restricțiilor impuse.

Explicație[edit | edit source]

Harta Ținutului de Nord cuprinde 3 rânduri a câte 5 comitate fiecare, având în total 15 comitate. Expansiunea bacteriei s-a oprit după 3 ani, deoarece a atins marginea de sus; au rămas 9 comitate neinfectate. <syntaxhighlight lang="python" line>

  1. 4236 - Bacterie1

def verificare_restrictii(n1, m1):

   # functia de verificare a datelor de intrare
   if 1 <= n1 <= 10**9 and 1 <= m1 <= 10**9:
       return True
   else:
       return False


def comitate_neinfectate(n1, m1):

   # Numarul total de comitate este n * m
   total = n1 * m1
   # Numarul de comitate infectate este egal cu numarul de comitate de pe margini
   infectate = 2 * (n1 + m1 - 5)
   # Numarul de comitate neinfectate este totalul minus cele infectate
   neinfectate = total - infectate
   return neinfectate


if __name__ == "__main__":

   try:
       # Citim datele de intrare
       n, m = map(int, input().split())
       if verificare_restrictii(n, m):             # verificam datele de intrare
           print("Datele de intrare corespund restrictiilor impuse.")
           # Calculam numarul de comitate neinfectate
           rezultat = comitate_neinfectate(n, m)
           # Afisam rezultatul
           print(rezultat)
       else:
           print("Datele de intrare nu corespund restrictiilor impuse.")
   # ne asteptam la 2 tipuri de erori din cauza datelor de intrare, le tratam corespunzator
   except ValueError:
       print("Datele de intrare nu corespund restrictiilor impuse.")
   except IndexError:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>