Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1994 - Vanatoare
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Enunț== Vânătorul şef al regelui Arthur a primit însărcinare să vâneze primele raţe ce se întorc din ţările calde. Regele fiind un tip cu idei fixe i-a cerut vânătorului să vâneze raţele albe cu săgeţi albe, iar raţele negre cu săgeţi negre. Raţele vin în stoluri din ce în ce mai mari: mai întâi una, apoi două, trei , cinci, opt ş.a.m.d. Raţele fiind nişte creaturi ordonate zboară în rânduri lungi, în care nu vei putea găsi două raţe de aceeaşi culoare alăturate, fiecare rând începînd cu o raţă albă. Vânătorul ştie că dacă a început să doboare un rând de raţe trebuie să le doboare pe toate deoarece supravieţuitoarele vor alerta celelalte raţe şi ele nu se vor mai întoarce niciodată, iar vânătorul nostru îşi va pierde slujba. ==Cerința== Ştiind că vânătorul a primit <span style=“color: red”>ka</span> săgeţi albe şi <span style=“color: red”>kb</span> săgeţi negre trebuie să determinaţi câte rânduri de raţe a doborât şi câte săgeţi de fiecare tip i-au rămas ştiind că el vrea să-şi păstreze slujba. ==Date de intrare== Se citesc de la tastatură numerele <span style=“color: red”>ka</span> şi <span style=“color: red”>kb</span> (în această ordine). ==Date de ieșire== Se va afişa pe prima linie a ecranului numărul de rânduri doborâte, pe a doua linie numărul de săgeți albe rămase, iar pe cea de-a treia numărul de săgeți negre. ==Restricții și precizări== 0<span style=“color: red”> ≤ ka, kb ≤ 2.000.000.000</span> ==Exemplu:== Intrare 9 10 Ieșire 4 2 6 ==Rezolvare== <syntaxhighlight lang="python" line> def validare(ka, kb): if 0 <= ka <= 2_000_000_000 and 0 <= kb <= 2_000_000_000: return True else: return False def creare(v): v[1] = 1 v[2] = 2 for i in range(3, 101): v[i] = v[i-1] + v[i-2] def vanatoare(ka, kb): v = [0] * 101 creare(v) cka = ka ckb = kb i = 1 while cka >= 0 and ckb >= 0: ka = cka kb = ckb if v[i] % 2 == 0: cka -= v[i] // 2 ckb -= v[i] // 2 else: cka -= v[i] // 2 + 1 ckb -= v[i] // 2 i += 1 print(i-2) print(ka) print(kb) if __name__ == "__main__": ka, kb = map(int, input().split()) if validare(ka, kb): print("Date de intrare valide") vanatoare(ka, kb) else: print("Date de intrare invalide") </syntaxhighlight> ==Explicatie cod:== Acest cod Python are următoarele funcționalități: Funcția validare(ka, kb) primește două numere întregi ka și kb și verifică dacă acestea sunt în intervalul [0, 2.000.000.000]. Dacă ambele numere respectă această condiție, funcția returnează True, altfel returnează False. Funcția creare(v) primește un vector v și atribuie primele 100 de elemente ale vectorului v conform unei secvențe predefinite. Funcția vanatoare(ka, kb) primește două numere întregi ka și kb și efectuează următoarele operații: Inițializează un vector v și apelează funcția creare(v) pentru a genera primele 100 de elemente ale vectorului v. Inițializează variabilele cka și ckb cu valorile lui ka și kb. Inițializează un contor i cu 1. Într-un buclă while, se actualizează valorile lui ka și kb pe baza condiției și a valorii curente din vectorul v. La final, se afișează rezultatele. În blocul if __name__ == "__main__":, se citește de la intrarea standard două numere întregi ka și kb. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare(ka, kb). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția vanatoare(ka, kb) și se efectuează operațiile corespunzătoare. În caz contrar, se afișează un mesaj de eroare. Codul primește valorile ka și kb de la intrarea standard, validează datele și efectuează operațiile specifice pentru a determina și afișa rezultatele.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width