2908 - Planta: Difference between revisions
Cuceu Andrei (talk | contribs) Pagină nouă: ==Enunt== Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are '''D''' cm, apoi a văzut că se dezvoltă într-un ritm special: *În prima zi, planta crește cu '''A''' cm *În a doua zi, descrește cu '''B''' cm *În a treia zi, iar crește cu '''A''' cm *În a patra zi, descrește din nou cu '''B''' cm *etc. Pe scurt, în zilele cu număr de ordine impar crește cu '''A''' cm, iar în cele... |
Vardai Erwin (talk | contribs) |
||
Line 1: | Line 1: | ||
== | ==Enunț== | ||
Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are '''D''' cm, apoi a văzut că se dezvoltă într-un ritm special: | Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are '''D''' cm, apoi a văzut că se dezvoltă într-un ritm special: | ||
Line 8: | Line 8: | ||
*etc. | *etc. | ||
Pe scurt, în zilele cu număr de ordine impar crește cu '''A''' cm, iar în cele cu număr de ordine par, descrește cu '''B '''cm. | Pe scurt, în zilele cu număr de ordine impar crește cu '''A''' cm, iar în cele cu număr de ordine par, descrește cu '''B '''cm. | ||
==Cerință== | ==Cerință== |
Revision as of 16:56, 7 May 2023
Enunț
Ghiță a primit de ziua lui o plantă exotică, ce se comportă foarte ciudat. El a măsurat-o când a primit-o și a constatat că are D cm, apoi a văzut că se dezvoltă într-un ritm special:
- În prima zi, planta crește cu A cm
- În a doua zi, descrește cu B cm
- În a treia zi, iar crește cu A cm
- În a patra zi, descrește din nou cu B cm
- etc.
Pe scurt, în zilele cu număr de ordine impar crește cu A cm, iar în cele cu număr de ordine par, descrește cu B cm.
Cerință
Știind D, înalțimea inițiala a plantei și valorile A și B cu care aceasta crește, respectiv descrește, să se afla ce înălțime va avea planta lui Ghiță la finalul celei de-a N -a zile.
Date de intrare
Pe prima linie a fișierului planta.in se vor afla patru numere naturale D A B N în aceasta ordine, separate prin câte un spațiu, cu semnificațiile din enunț.
Date de ieșire
Pe prima linie a fișierului planta.out se va afla un număr H, semnificând înălțimea finală a plantei în cm la finalul celei de-a N -a zile.
Restricții și precizări
- 0 ≤ D ≤ 100
- 1 ≤ B ≤ A ≤ 1 000 000
- 1 ≤ N ≤ 1 000 000 000
- Pentru 50% dintre teste, 1 ≤ N ≤ 1 000 000
- Se garantează că pentru toate testele valorile se încadrează în tipul int.
Exemplul 1
- planta.in
4 5 2 3
- planta.out
12
Explicatie
- Dupa prima zi: H = 4 + 5 = 9
- Dupa a doua zi: H = 9 – 2 = 7
- Dupa a treia zi: H = 7 + 5 = 12
- Deci la finalul celei de-a 3-a zile, inaltimea plantei o sa fie 12 cm .
Exemplul 2
- planta.in
57 1000 1000 120
- planta.out
57
Rezolvare
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1">
def validate_input(d, a, b, n):
if not (0 <= d <= 100): return False if not (1 <= b <= a <= 1000000): return False if not (1 <= n <= 1000000000): return False return True
def final_height(d, a, b, n):
height = d for i in range(1, n+1): if i % 2 == 1: height += a else: height -= b if height < 0: height = 0 return height
if __name__ == '__main__':
with open('planta.in', 'r') as f_in: d, a, b, n = map(int, f_in.readline().strip().split()) if not validate_input(d, a, b, n): print('Input invalid') else: height = final_height(d, a, b, n) with open('planta.out', 'w') as f_out: f_out.write(str(height))
</syntaxhighlight>
Explicatie
Funcția validate_input verifică dacă valorile citite din fișier respectă restricțiile din enunț, iar funcția final_height calculează înălțimea finală a plantei prin simularea creșterii/descreșterii într-o buclă for.
În blocul main se deschide fișierul de intrare, se citesc valorile și se validează inputul. Dacă inputul este valid, se calculează înălțimea finală a plantei și se scrie rezultatul în fișierul de ieșire. Dacă inputul nu este valid, se afișează un mesaj corespunzător.