4236 - Bacterie1: Diferență între versiuni

De la Universitas 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...)
 
Fără descriere a modificării
Linia 8: Linia 8:
* '''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):
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>

Versiunea de la data 10 noiembrie 2023 17:15

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;
  • aceasta este problema #Bacterie , dar opeațiile de intrare/ieșire se fac cu consola.

Exemplul 1

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

Exemplul 2

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

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.

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.")