<?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=2194_-_identice3</id>
	<title>2194 - identice3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2194_-_identice3"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2194_-_identice3&amp;action=history"/>
	<updated>2026-05-01T10:13: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=2194_-_identice3&amp;diff=9712&amp;oldid=prev</id>
		<title>Aurelia Raluca at 23:23, 22 March 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2194_-_identice3&amp;diff=9712&amp;oldid=prev"/>
		<updated>2024-03-22T23:23:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=2194_-_identice3&amp;amp;diff=9712&amp;amp;oldid=8240&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Aurelia Raluca</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=2194_-_identice3&amp;diff=8240&amp;oldid=prev</id>
		<title>Aurelia Raluca: Pagină nouă: == Enunt ==   Mihai a construit o matrice pătratică A de dimensiune N cu valori în mulțimea {0,1}. El preferă acele matrice care au toate elementele identice și de aceea a calculat pentru matricea A, numărul K de submatrice care au toate elementele identice. Acum, Mihai vrea să transforme matricea A într-o matrice cu toate elementele identice. Pentru aceasta, el a selectat un număr natural nenul D, și definește operația ZET care constă în alegerea unei submatri...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2194_-_identice3&amp;diff=8240&amp;oldid=prev"/>
		<updated>2023-12-18T19:18:32Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt ==   Mihai a construit o matrice pătratică A de dimensiune N cu valori în mulțimea {0,1}. El preferă acele matrice care au toate elementele identice și de aceea a calculat pentru matricea A, numărul K de submatrice care au toate elementele identice. Acum, Mihai vrea să transforme matricea A într-o matrice cu toate elementele identice. Pentru aceasta, el a selectat un număr natural nenul D, și definește operația ZET care constă în alegerea unei submatri...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt == &lt;br /&gt;
&lt;br /&gt;
Mihai a construit o matrice pătratică A de dimensiune N cu valori în mulțimea {0,1}. El preferă acele matrice care au toate elementele identice și de aceea a calculat pentru matricea A, numărul K de submatrice care au toate elementele identice. Acum, Mihai vrea să transforme matricea A într-o matrice cu toate elementele identice. Pentru aceasta, el a selectat un număr natural nenul D, și definește operația ZET care constă în alegerea unei submatrice pătratice de dimensiunea D din matricea precedentă în care schimbă toate elementele 0 în 1 și invers. El vrea să aplice operația ZET inițial pentru matricea A, apoi repetă operația pentru matricea obținută la momentul anterior, de un număr minim de ori, notat R, până când matricea obținută are toate elementele identice, sau dacă nu este posibil, R va avea valoarea -1.&lt;br /&gt;
&lt;br /&gt;
== Cerinta == &lt;br /&gt;
&lt;br /&gt;
Mihai vă roagă să calculați valorile K și R. Pentru a preciza tipul cerinței, Mihai folosește un cod T care dacă are valoarea 1, atunci solicită calcularea valorii K, iar dacă T are valoarea 2, atunci solicită calcularea valorii R.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare identice3.in se vor afla numerele naturale T, N și D, cu semnificația de mai sus, separate prin câte un spațiu. Pe următoarele N linii se vor afla câte N valori de 0 și 1, elementele liniilor matricei A, fără spații între ele.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
&lt;br /&gt;
Fișierul de ieșire identice3.out se va afla un număr natural, respectiv valoarea K pentru T = 1 sau valoarea R pentru T = 2.&lt;br /&gt;
&lt;br /&gt;
== Restrictii si precizari ==&lt;br /&gt;
&lt;br /&gt;
*1 &amp;lt; D &amp;lt; N ≤ 1000&lt;br /&gt;
*Pentru calcularea valorii K, submatricele pot fi pătratice sau dreptunghiulare, cu diferite dimensiuni (inclusiv 1), cu elementele identice.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
&lt;br /&gt;
; intrare&lt;br /&gt;
&lt;br /&gt;
:1 4 2&lt;br /&gt;
&lt;br /&gt;
:0011&lt;br /&gt;
&lt;br /&gt;
:0011&lt;br /&gt;
&lt;br /&gt;
:1100&lt;br /&gt;
&lt;br /&gt;
:1100&lt;br /&gt;
&lt;br /&gt;
; iesire&lt;br /&gt;
&lt;br /&gt;
:Datele introduse corespund restrictiilor impuse.&lt;br /&gt;
&lt;br /&gt;
:36&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
&lt;br /&gt;
; intrare&lt;br /&gt;
&lt;br /&gt;
:10 9 5&lt;br /&gt;
&lt;br /&gt;
:1100&lt;br /&gt;
&lt;br /&gt;
:1010&lt;br /&gt;
&lt;br /&gt;
:0011&lt;br /&gt;
&lt;br /&gt;
:0101&lt;br /&gt;
&lt;br /&gt;
; iesire&lt;br /&gt;
&lt;br /&gt;
:Datele de intrare nu corespund restrictiilor impuse.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#2194 - identice3&lt;br /&gt;
&lt;br /&gt;
def count_K(N):&lt;br /&gt;
    K = 0&lt;br /&gt;
    for D in range(1, N+1):&lt;br /&gt;
        K += (N - D + 1) ** 2&lt;br /&gt;
    return K&lt;br /&gt;
&lt;br /&gt;
def apply_ZET(matrix, D):&lt;br /&gt;
    new_matrix = [row.copy() for row in matrix]&lt;br /&gt;
    for i in range(len(matrix) - D + 1):&lt;br /&gt;
        for j in range(len(matrix[0]) - D + 1):&lt;br /&gt;
            for x in range(D):&lt;br /&gt;
                for y in range(D):&lt;br /&gt;
                    new_matrix[i + x][j + y] = 1 - matrix[i + x][j + y]&lt;br /&gt;
    return new_matrix&lt;br /&gt;
&lt;br /&gt;
def count_R(matrix):&lt;br /&gt;
    R = 0&lt;br /&gt;
    while len(set(matrix[0])) &amp;gt; 1 or any(matrix[i] != matrix[0] for i in range(1, len(matrix))):&lt;br /&gt;
        matrix = apply_ZET(matrix, R + 1)&lt;br /&gt;
        R += 1&lt;br /&gt;
        if R &amp;gt; min(len(matrix), len(matrix[0])):&lt;br /&gt;
            return -1&lt;br /&gt;
    return R&lt;br /&gt;
&lt;br /&gt;
if T == 1:&lt;br /&gt;
    K = count_K(N)&lt;br /&gt;
    print(f&amp;quot;Valoarea lui K este: {K}&amp;quot;)&lt;br /&gt;
elif T == 2:&lt;br /&gt;
    R = count_R(matrix_A)&lt;br /&gt;
    print(f&amp;quot;Valoarea lui R este: {R}&amp;quot;)&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Valoarea T trebuie să fie 1 sau 2.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aurelia Raluca</name></author>
	</entry>
</feed>