<?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=1450_-_Memory_003</id>
	<title>1450 - Memory 003 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1450_-_Memory_003"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1450_-_Memory_003&amp;action=history"/>
	<updated>2026-05-02T20:24:15Z</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=1450_-_Memory_003&amp;diff=4012&amp;oldid=prev</id>
		<title>Andor Giulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1450/memory003] == Cerinţa == Se dă o matrice cu &#039;&#039;&#039;m&#039;&#039;&#039; linii şi &#039;&#039;&#039;n&#039;&#039;&#039; coloane, având elementele numere naturale nenule. Aflaţi câte coloane ale matricei au produsul elementelor divizibil cu un număr dat &#039;&#039;&#039;p&#039;&#039;&#039;. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;memory003.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;m&#039;&#039;&#039;, &#039;&#039;&#039;n&#039;&#039;&#039; şi &#039;&#039;&#039;p&#039;&#039;&#039;, iar pe următoarele &#039;&#039;&#039;m&#039;&#039;&#039; linii câte &#039;&#039;&#039;n&#039;&#039;&#039; numere naturale separate prin spații, repre...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1450_-_Memory_003&amp;diff=4012&amp;oldid=prev"/>
		<updated>2023-04-22T11:32:20Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/1450/memory003] == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane, având elementele numere naturale nenule. Aflaţi câte coloane ale matricei au produsul elementelor divizibil cu un număr dat &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;memory003.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații, repre...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/1450/memory003]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; coloane, având elementele numere naturale nenule. Aflaţi câte coloane ale matricei au produsul elementelor divizibil cu un număr dat &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;memory003.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;, iar pe următoarele &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații, reprezentând elementele matricei.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;. Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;memory003.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul de coloane ale matricei pentru care produsul elementelor este divizibil cu &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ m ≤ 1.000&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ n ≤ 300&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ p ≤ 1.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* elementele matricei sunt mai mici sau egale cu &amp;#039;&amp;#039;&amp;#039;100&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;memory003.in&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 2 3 10&lt;br /&gt;
: 4 7 5&lt;br /&gt;
: 25 8 6&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;memory003.out&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 2&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Produsul elementelor pe coloane este &amp;#039;&amp;#039;&amp;#039;100&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;56&amp;#039;&amp;#039;&amp;#039;, respectiv &amp;#039;&amp;#039;&amp;#039;30&amp;#039;&amp;#039;&amp;#039;. Avem astfel &amp;#039;&amp;#039;&amp;#039;două&amp;#039;&amp;#039;&amp;#039; coloane cu produsul elementelor divizibil cu &amp;#039;&amp;#039;&amp;#039;10&amp;#039;&amp;#039;&amp;#039;.&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;
def citire_matrice():&lt;br /&gt;
    # Deschide fișierul de intrare și citește n, m și p&lt;br /&gt;
    with open(&amp;quot;memory003.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, m, p = map(int, fin.readline().split())&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 300 and 1 &amp;lt;= m &amp;lt;= 1000 and 1 &amp;lt;= p &amp;lt;= 1000000000):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        matrice = []&lt;br /&gt;
        # Citește matricea din fișierul de intrare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            # Verifică dacă elementele matricei sunt conform cerințelor&lt;br /&gt;
            if not all(x &amp;lt;= 100 for x in row):&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
            matrice.append(row)&lt;br /&gt;
&lt;br /&gt;
        return n, m, p, matrice&lt;br /&gt;
&lt;br /&gt;
def Memory003(n, m, p, matrice):&lt;br /&gt;
    count = 0&lt;br /&gt;
    for j in range(m):&lt;br /&gt;
        produs = 1&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            produs *= matrice[i][j]&lt;br /&gt;
        if produs % p == 0:&lt;br /&gt;
            count += 1&lt;br /&gt;
    return count&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, p, matrice = citire_matrice()&lt;br /&gt;
    col_divizibile = Memory003(n, m, p, matrice)&lt;br /&gt;
    with open(&amp;quot;memory003.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(col_divizibile) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Numarul de coloane cu produsul divizibil cu p este:&amp;quot;, col_divizibile)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este o soluție pentru problema &amp;quot;Memory003&amp;quot; din cadrul concursului &amp;quot;ONI 2021&amp;quot; (Olimpiada Națională de Informatică). Scopul problemei este de a găsi numărul de coloane dintr-o matrice ale căror elemente au un produs divizibil cu un număr dat.&lt;br /&gt;
&lt;br /&gt;
 Funcția read_matrix() citește matricea din fișierul de intrare &amp;quot;memory003.in&amp;quot; și verifică dacă dimensiunile matricei și valorile elementelor îndeplinesc cerințele impuse de problema. Funcția returnează dimensiunile matricei n și m, numărul p, și matricea propriu-zisă.&lt;br /&gt;
&lt;br /&gt;
 Funcția Memory003(n, m, p, matrice) primește dimensiunile matricei, numărul p, și matricea propriu-zisă și calculează numărul de coloane ale căror elemente au un produs divizibil cu p. Pentru fiecare coloană j a matricei, funcția calculează produsul elementelor de pe fiecare linie i, folosind un for loop îmbricat. Dacă produsul este divizibil cu p, se incrementează numărul de coloane găsite.&lt;br /&gt;
&lt;br /&gt;
 În funcția principală, se apelează read_matrix() pentru a citi datele din fișierul de intrare, apoi se apelează Memory003() pentru a rezolva problema. Rezultatul este scris în fișierul de ieșire &amp;quot;memory003.out&amp;quot; și afișat pe ecran.&lt;/div&gt;</summary>
		<author><name>Andor Giulia</name></author>
	</entry>
</feed>