<?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=1968_-_Bloc</id>
	<title>1968 - Bloc - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1968_-_Bloc"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1968_-_Bloc&amp;action=history"/>
	<updated>2026-05-01T14:46:51Z</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=1968_-_Bloc&amp;diff=9990&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Cerinţa == Cifrele de la 1 la K se scriu într-un şir, iar secvenţa obţinută se repetă la nesfârşit. De exemplu, pentru K=9 se obţine şirul: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 …. Asupra unui asemenea şir se aplică succesiv operaţia de rostogolire de lungime P, ce presupune ca blocul format cu cifrele de pe primele P poziţii să se rotească cu 1800 şi să se scrie deasupra următoarei secvenţe de lungime P. În cazul exemplului anterior...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1968_-_Bloc&amp;diff=9990&amp;oldid=prev"/>
		<updated>2024-06-03T16:19:27Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Cifrele de la 1 la K se scriu într-un şir, iar secvenţa obţinută se repetă la nesfârşit. De exemplu, pentru K=9 se obţine şirul: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 …. Asupra unui asemenea şir se aplică succesiv operaţia de rostogolire de lungime P, ce presupune ca blocul format cu cifrele de pe primele P poziţii să se rotească cu 1800 şi să se scrie deasupra următoarei secvenţe de lungime P. În cazul exemplului anterior...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerinţa ==&lt;br /&gt;
Cifrele de la 1 la K se scriu într-un şir, iar secvenţa obţinută se repetă la nesfârşit. De exemplu, pentru K=9 se obţine şirul: 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 …. Asupra unui asemenea şir se aplică succesiv operaţia de rostogolire de lungime P, ce presupune ca blocul format cu cifrele de pe primele P poziţii să se rotească cu 1800 şi să se scrie deasupra următoarei secvenţe de lungime P. În cazul exemplului anterior, pentru P=3, vom obţine după 4 operaţii de rostogolire de lungime 3:&lt;br /&gt;
Pas 1: 3 2 1&lt;br /&gt;
     4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9…&lt;br /&gt;
&lt;br /&gt;
Pas 2: 6 5 4   &lt;br /&gt;
     1 2 3&lt;br /&gt;
     7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9…&lt;br /&gt;
&lt;br /&gt;
Pas 3: 9 8 7&lt;br /&gt;
     3 2 1&lt;br /&gt;
     4 5 6&lt;br /&gt;
     1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9…&lt;br /&gt;
&lt;br /&gt;
Pas 4: 3 2 1&lt;br /&gt;
     6 5 4&lt;br /&gt;
     1 2 3&lt;br /&gt;
     7 8 9&lt;br /&gt;
     4 5 6 7 8 9 1 2 3 4 5 6 7 8 9…&lt;br /&gt;
Astfel pe primele P poziţii se formează un bloc având la bază P cifre şi înălţimea N+1, unde N este numărul de rostogoliri de lungime P.&lt;br /&gt;
Pentru K, P şi N date se cer următoarele:&lt;br /&gt;
a) Suma elementelor blocului după N rostogoliri de lungime P.&lt;br /&gt;
b) Suma maximă a elementelor de pe o coloană a blocului după N rostogoliri de lungime P.&lt;br /&gt;
c) Dacă liniile blocului le privim ca pe nişte numere cu P cifre, să se afle cel mai mic dintre aceste numere ale blocului obţinut după N rostogoliri de lungime P.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fişierul de intrare bloc.in conţine pe prima linie numerele K, P şi N ce reprezintă cifra maximă din şirul iniţial, lungimea secvenţei care se rostogoleşte, respectiv numărul de rostogoliri.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fişierul de ieşire bloc.out va conţine pe prima linie suma elementelor blocului după N rostogoliri, pe a doua linie suma maximă a elementelor unei coloane a blocului după N rostogoliri, iar pe a treia linie numărul minim format din cifrele unei linii a blocului după N rostogoliri.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤  K ≤ 9&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤  P ≤ 100&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤  N ≤ 1.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Prima cerinţă se notează cu 40p, a doua cu 40p, iar a treia cu 20p&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; bloc.in&lt;br /&gt;
&lt;br /&gt;
  9 3 4&lt;br /&gt;
; bloc.out&lt;br /&gt;
&lt;br /&gt;
  66&lt;br /&gt;
  23&lt;br /&gt;
  123&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Datele corespund exemplului de mai sus. La pasul 4 suma elementelor blocului este 66, coloana a treia a blocului are suma 1+4+3+9+6=23 care este maximă, iar cifrele de pe linia a treia a blocului formează numărul minim 123.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&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;
def rotate_sequence(sequence, P):&lt;br /&gt;
    return sequence[P-1::-1] + sequence[P:]&lt;br /&gt;
&lt;br /&gt;
def rotate_block(block, P):&lt;br /&gt;
    return [rotate_sequence(row, P) for row in block]&lt;br /&gt;
&lt;br /&gt;
def sum_block(block):&lt;br /&gt;
    return sum(sum(row) for row in block)&lt;br /&gt;
&lt;br /&gt;
def max_column_sum(block):&lt;br /&gt;
    max_sum = 0&lt;br /&gt;
    for j in range(len(block[0])):&lt;br /&gt;
        column_sum = sum(block[i][j] for i in range(len(block)))&lt;br /&gt;
        max_sum = max(max_sum, column_sum)&lt;br /&gt;
    return max_sum&lt;br /&gt;
&lt;br /&gt;
def min_line_number(block):&lt;br /&gt;
    min_number = int(&amp;#039;&amp;#039;.join(map(str, block[0])))&lt;br /&gt;
    for row in block[1:]:&lt;br /&gt;
        number = int(&amp;#039;&amp;#039;.join(map(str, row)))&lt;br /&gt;
        min_number = min(min_number, number)&lt;br /&gt;
    return min_number&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;bloc.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        K, P, N = map(int, fin.readline().split())&lt;br /&gt;
&lt;br /&gt;
    sequence = [i % K + 1 for i in range(K * 2)]&lt;br /&gt;
    block = [sequence[i:i+P] for i in range(0, P*(N+1), P)]&lt;br /&gt;
&lt;br /&gt;
    for _ in range(N):&lt;br /&gt;
        block = rotate_block(block, P)&lt;br /&gt;
&lt;br /&gt;
    sum_elements = sum_block(block)&lt;br /&gt;
    max_column = max_column_sum(block)&lt;br /&gt;
    min_line = min_line_number(block)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;bloc.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(f&amp;quot;{sum_elements}\n&amp;quot;)&lt;br /&gt;
        fout.write(f&amp;quot;{max_column}\n&amp;quot;)&lt;br /&gt;
        fout.write(f&amp;quot;{min_line}\n&amp;quot;)&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>RebecaBud</name></author>
	</entry>
</feed>