<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1351_-_Nano</id>
	<title>1351 - Nano - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1351_-_Nano"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1351_-_Nano&amp;action=history"/>
	<updated>2026-05-02T01:22:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1351_-_Nano&amp;diff=8779&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: În lumea lui Nano totul se construiește la nivel atomic. Știința a ajuns așa departe încât poate construi ”plăci” dreptunghiulare de atomi în care aceștia sunt aliniați perfect, pe un singur strat, formând un rastru. Nano dorește să comande la o firmă plăci pătrate de dimensiuni mari. Dimensiunile sunt atât de mari încât numărul de atomi dintr-o placă poate să fie scris cu până la 500 cifre. Firma i-a dat o listă cu bucățile de material de care...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1351_-_Nano&amp;diff=8779&amp;oldid=prev"/>
		<updated>2024-01-02T17:47:22Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: În lumea lui Nano totul se construiește la nivel atomic. Știința a ajuns așa departe încât poate construi ”plăci” dreptunghiulare de atomi în care aceștia sunt aliniați perfect, pe un singur strat, formând un rastru. Nano dorește să comande la o firmă plăci pătrate de dimensiuni mari. Dimensiunile sunt atât de mari încât numărul de atomi dintr-o placă poate să fie scris cu până la 500 cifre. Firma i-a dat o listă cu bucățile de material de care...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;În lumea lui Nano totul se construiește la nivel atomic. Știința a ajuns așa departe încât poate construi ”plăci” dreptunghiulare de atomi în care aceștia sunt aliniați perfect, pe un singur strat, formând un rastru. Nano dorește să comande la o firmă plăci pătrate de dimensiuni mari. Dimensiunile sunt atât de mari încât numărul de atomi dintr-o placă poate să fie scris cu până la 500 cifre. Firma i-a dat o listă cu bucățile de material de care dispune, pentru fiecare bucată fiind cunoscut numărul de atomi componenți, urmând ca Nano să aleagă doar acele bucăți din care se pot construi plăci pătrate.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieți un program care citind numărul de atomi ai fiecărei bucăți de material din fișierul &amp;#039;&amp;#039;&amp;#039;nanoin.txt&amp;#039;&amp;#039;&amp;#039; scrie în fișierul &amp;#039;&amp;#039;&amp;#039;nanoout.txt&amp;#039;&amp;#039;&amp;#039; doar bucățile de material din care se pot face plăcile dorite de Nano.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;nanoin.txt&amp;#039;&amp;#039;&amp;#039; se află numărul natural &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; ce reprezintă numărul de bucăți de material, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;2*n&amp;#039;&amp;#039;&amp;#039; rânduri perechi de numere &amp;#039;&amp;#039;&amp;#039;x y&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de cifre a lui &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; fiind numărul de atomi dintr-o bucată de material.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Se vor scrie în fișierul &amp;#039;&amp;#039;&amp;#039;nanoout.txt&amp;#039;&amp;#039;&amp;#039; acele valori &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; din care se pot construi plăci pătrate.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;lt; n &amp;lt; 50&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;0 &amp;lt; x &amp;lt; 501&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* În fișier se află cel puțin o bucată de material ce respectă cerințele lui Nano&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; nanoin.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 2&lt;br /&gt;
: 39&lt;br /&gt;
: 3&lt;br /&gt;
: 100&lt;br /&gt;
: 11&lt;br /&gt;
: 15241383936&lt;br /&gt;
; nanoout.txt&lt;br /&gt;
:  Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 100&lt;br /&gt;
: 15241383936&lt;br /&gt;
== Explicație ==&lt;br /&gt;
În fişierul &amp;#039;&amp;#039;&amp;#039;nanoin.txt&amp;#039;&amp;#039;&amp;#039; există &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; numere, primul având două cifre, al doilea trei cifre şi ultimul &amp;#039;&amp;#039;&amp;#039;11&amp;#039;&amp;#039;&amp;#039; cifre. Din bucata cu &amp;#039;&amp;#039;&amp;#039;100&amp;#039;&amp;#039;&amp;#039; atomi se poate face o placă pătrată de latură &amp;#039;&amp;#039;&amp;#039;10&amp;#039;&amp;#039;&amp;#039; iar din bucata de dimensiune &amp;#039;&amp;#039;&amp;#039;15241383936&amp;#039;&amp;#039;&amp;#039; se obține o placă de latură &amp;#039;&amp;#039;&amp;#039;123456&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; nanoin.txt&lt;br /&gt;
: 51&lt;br /&gt;
: 1&lt;br /&gt;
: 2&lt;br /&gt;
: 1&lt;br /&gt;
: 3&lt;br /&gt;
; nanoout.txt&lt;br /&gt;
:  Datele introduse nu corespund restricțiilor impuse.&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 1351 - Nano&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def este_patrat_perfect(n):&lt;br /&gt;
    radacina = math.isqrt(n)&lt;br /&gt;
    return radacina * radacina == n&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def validare(numere_validare, fisier_iesire_validare):           # functia de validare a datelor de intrare&lt;br /&gt;
    if len(numere_validare) &amp;gt; 50:&lt;br /&gt;
        fisier_iesire_validare.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
    for numar in numere_validare:&lt;br /&gt;
        if len(str(numar)) &amp;gt; 500:    # fiecare numar trebuie sa aiba mai putin de 500 de cifre&lt;br /&gt;
            fisier_iesire_validare.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
            exit(0)&lt;br /&gt;
    fisier_iesire_validare.write(&amp;quot;Datele introduse corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def scrie_bucati_patrate(numere_scriere, fisier_iesire_scriere):&lt;br /&gt;
    for numar in numere_scriere:&lt;br /&gt;
        if este_patrat_perfect(numar):&lt;br /&gt;
            fisier_iesire_scriere.write(str(numar) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_date_intrare():&lt;br /&gt;
    with open(&amp;#039;nanoin.txt&amp;#039;, &amp;#039;r&amp;#039;) as fisier_intrare_citire:&lt;br /&gt;
        n_citire = int(fisier_intrare_citire.readline())&lt;br /&gt;
        numere_citire = []&lt;br /&gt;
        for _ in range(n_citire):&lt;br /&gt;
            fisier_intrare_citire.readline()  # citim si ignoram numarul de cifre&lt;br /&gt;
            linie = fisier_intrare_citire.readline()&lt;br /&gt;
            if not linie:  # daca am ajuns la sfarsitul fisierului sau exista o linie goala, iesim din bucla&lt;br /&gt;
                break&lt;br /&gt;
            numere_citire.append(int(linie))  # citim numarul&lt;br /&gt;
    return n_citire, numere_citire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    n_main, numere_main = citeste_date_intrare()&lt;br /&gt;
    with open(&amp;#039;nanoout.txt&amp;#039;, &amp;#039;w&amp;#039;) as fisier_iesire_main:&lt;br /&gt;
        validare(numere_main, fisier_iesire_main)  # validam datele de intrare&lt;br /&gt;
        scrie_bucati_patrate(numere_main, fisier_iesire_main)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>