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
0141 - Compuneri
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!
== Enunt == După descoperirea vieţii pe planeta Marte, cercetătorii pământeni au început activitatea de studiere a fiinţelor vii marţiene. Prima constatare a fost că este o legătură strânsă între modul de formare a acestora şi numerele naturale. Astfel, unei specii i s-a asociat un număr natural mai mare decât 1. Mai mult, oricare două specii se pot compune, rezultând altă specie. Numărul asociat noii specii este dat de produsul numerelor asociate celor două specii care se compun. Astfel, modalitatea de obţinere a unei specii nu este unică (o specie ce are asociat numărul 12 se poate obţine compunând specia 2 cu specia 6, sau specia 3 cu specia 4). Evident, unele specii se pot obţine prin compunerea altora (ex. 12) dar unele nu se pot obţine prin compunere. Pe acestea din urmă le vom numi atomi (de exemplu specia ce are asociat codul 7 este atom, şi mai sunt şi altele). O specie se poate compune cu ea însăşi rezultând altă specie (de exemplu, prin compunerea speciei 3 cu ea însăşi se obţine specia 9). De asemenea, dacă specia X se poate obţine prin compunerea speciilor Y şi Z spunem că X are în compoziţie pe Y şi pe Z. Mai mulţi cercetători au recoltat probe obţinând astfel o listă de coduri ale speciilor pe care le-au observat. == Cerinţa == Scrieţi un program care, pe baza codurilor din lista formată, să determine: a) numărul de atomi din listă; b) numărul de specii din listă care nu pot avea în compoziţie niciun atom dintre cei aflaţi în listă; == Date de intrare == Fişierul compuneri.in conţine pe prima linie un număr natural N. Pe linia a doua se află N numere naturale separate prin câte un spaţiu. Acestea reprezintă codurile speciilor din listă. == Date de ieșire == Fişierul compuneri.out va conţine pe prima linie două valori naturale separate printr-un spaţiu, ce reprezintă numerele din cerinţă: (primul număr va fi valoarea calculată pentru cerinţa a) ). == Restricţii şi precizări == * 1 <= N <= 100000; * 2 <= numerele din listă ≤ 100000; * Numerele din listă se pot repeta iar la rezultat se va contoriza fiecare apariţie; == Exemplul 1 == ; compuneri.in 10 7 7 121 11 3 29 32 3 1300 17 ; compuneri.out 7 2 == Explicație == În listă sunt 7 atomi: 7, 7, 11, 3, 29, 3, 17 Dintre celelalte trei valori, 121 se formează prin compunerea atomului existent 11 cu el însuşi iar celelalte două nu se pot obţine prin compuneri ale atomilor existenţi. <br> == Rezolvare == <syntaxhighlight lang="python" line> def count_atoms_and_species(species_codes): atoms = set() for code in species_codes: factors = set() for i in range(2, int(code**0.5) + 1): if code % i == 0: factors.add(i) factors.add(code // i) if len(factors) == 0: atoms.add(code) return len(atoms), len(species_codes) - len(atoms) def main(): with open("compuneri.in", "r") as fin: N = int(fin.readline().strip()) species_codes = list(map(int, fin.readline().split())) atom_count, species_count = count_atoms_and_species(species_codes) with open("compuneri.out", "w") as fout: fout.write(f"{atom_count} {species_count}") if __name__ == "__main__": main() </syntaxhighlight>
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