<?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=1629_-_Qmat</id>
	<title>1629 - Qmat - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1629_-_Qmat"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1629_-_Qmat&amp;action=history"/>
	<updated>2026-05-01T06:37:45Z</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=1629_-_Qmat&amp;diff=8237&amp;oldid=prev</id>
		<title>Vasiliu Costel Andrei: Pagină nouă: == Enunț == Spunem că două matrice a și b sunt egale dacă au același număr de linii n și același număr de coloane m și pentru orice pereche de indici i, j (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i][j] = b[i][j].  == Cerința == Se dau două seturi de N, respectiv Q matrice binare (cu valori 0 sau 1), pentru fiecare matrice fiind precizat numărul de linii respectiv de coloane. Să se afișeze numărul aparițiilor matricelor din al doilea set în primul.  == Date de intra...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1629_-_Qmat&amp;diff=8237&amp;oldid=prev"/>
		<updated>2023-12-18T11:28:03Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Spunem că două matrice a și b sunt egale dacă au același număr de linii n și același număr de coloane m și pentru orice pereche de indici i, j (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i][j] = b[i][j].  == Cerința == Se dau două seturi de N, respectiv Q matrice binare (cu valori 0 sau 1), pentru fiecare matrice fiind precizat numărul de linii respectiv de coloane. Să se afișeze numărul aparițiilor matricelor din al doilea set în primul.  == Date de intra...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Spunem că două matrice a și b sunt egale dacă au același număr de linii n și același număr de coloane m și pentru orice pereche de indici i, j (1 ≤ i ≤ n, 1 ≤ j ≤ m) a[i][j] = b[i][j].&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Se dau două seturi de N, respectiv Q matrice binare (cu valori 0 sau 1), pentru fiecare matrice fiind precizat numărul de linii respectiv de coloane. Să se afișeze numărul aparițiilor matricelor din al doilea set în primul.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare qmatin.txt conține pe prima linie numărul N, urmat de N matrice, M1, M2, … Mn. Pentru fiecare matrice Mi este precizat, pe o linie, separate printr-un spațiu, numărul de linii li, respectiv de coloane ci, iar pe următoarele li linii câte ci cifre binare separate prin câte un spațiu. După cele N matrice se află și numărul Q urmat de asemenea de Q matrice descrise la fel ca și cele anterioare.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire qmatout.txt va conține pe prima linie numărul sol, reprezentând numărul de matrice din al doilea set ce apar în primul.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;n, q&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 10.000&lt;br /&gt;
* pentru orice matrice dată 1 ≤ nr. de linii, nr. de coloane ≤ 10&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; qmatin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 2 6&lt;br /&gt;
: 0 0 0 1 1 1&lt;br /&gt;
: 1 0 1 1 0 0&lt;br /&gt;
: 7 4&lt;br /&gt;
: 0 0 0 1&lt;br /&gt;
: 0 0 0 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 1 1 1 1&lt;br /&gt;
: 0 1 0 0&lt;br /&gt;
: 0 1 0 1&lt;br /&gt;
: 5 1&lt;br /&gt;
: 0&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 3&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; qmatout.txt&lt;br /&gt;
: 2&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; qmatin.txt&lt;br /&gt;
: 5&lt;br /&gt;
: 2 6&lt;br /&gt;
: 2 0 0 1 1 1&lt;br /&gt;
: 1 0 1 1 0 0&lt;br /&gt;
: 7 4&lt;br /&gt;
: 0 0 0 1&lt;br /&gt;
: 0 0 0 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 0 1 1 0&lt;br /&gt;
: 1 1 1 1&lt;br /&gt;
: 0 1 0 0&lt;br /&gt;
: 0 1 0 1&lt;br /&gt;
: 5 1&lt;br /&gt;
: 0&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 0&lt;br /&gt;
: 1&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 3&lt;br /&gt;
: 3 5&lt;br /&gt;
: 0 1 1 1 1&lt;br /&gt;
: 1 1 1 0 0&lt;br /&gt;
: 0 0 1 1 0&lt;br /&gt;
: 9 2&lt;br /&gt;
: 0 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 1&lt;br /&gt;
: 1 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 1&lt;br /&gt;
: 0 0&lt;br /&gt;
: 1 1&lt;br /&gt;
: 2 3&lt;br /&gt;
: 1 1 1&lt;br /&gt;
: 1 1 1&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#1629 - Qmat&lt;br /&gt;
&lt;br /&gt;
def este_matrice_valida(matrice):&lt;br /&gt;
    if len(matrice) == 0 or len(matrice[0]) == 0:&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    lungime_rand = len(matrice[0])&lt;br /&gt;
    if any(len(rand) != lungime_rand for rand in matrice):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    if any(element not in (0, 1) for rand in matrice for element in rand):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def citeste_matrice(fisier):&lt;br /&gt;
    nr_randuri, nr_coloane = map(int, fisier.readline().split())&lt;br /&gt;
    matrice = [list(map(int, fisier.readline().split())) for _ in range(nr_randuri)]&lt;br /&gt;
    return matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def numara_aparitii(set_matrice_1, set_matrice_2):&lt;br /&gt;
    numar_aparitii = 0&lt;br /&gt;
    for matrice_2 in set_matrice_2:&lt;br /&gt;
        for matrice_1 in set_matrice_1:&lt;br /&gt;
            if matrice_1 == matrice_2:&lt;br /&gt;
                numar_aparitii += 1&lt;br /&gt;
                break&lt;br /&gt;
    return numar_aparitii&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;qmatin.txt&amp;quot;, &amp;quot;r&amp;quot;) as fisier:&lt;br /&gt;
        n = int(fisier.readline())&lt;br /&gt;
        set_matrice_1 = [citeste_matrice(fisier) for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
        q = int(fisier.readline())&lt;br /&gt;
        set_matrice_2 = [citeste_matrice(fisier) for _ in range(q)]&lt;br /&gt;
&lt;br /&gt;
    if all(este_matrice_valida(matrice) for set_matrice in [set_matrice_1, set_matrice_2] for matrice in set_matrice):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = numara_aparitii(set_matrice_1, set_matrice_2)&lt;br /&gt;
        with open(&amp;quot;qmatout.txt&amp;quot;, &amp;quot;w&amp;quot;) as fisier_out:&lt;br /&gt;
            fisier_out.write(str(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
</feed>