<?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=1107_-_Reflex</id>
	<title>1107 - Reflex - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1107_-_Reflex"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1107_-_Reflex&amp;action=history"/>
	<updated>2026-05-01T12:34:33Z</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=1107_-_Reflex&amp;diff=5530&amp;oldid=prev</id>
		<title>Sovago Rares-Andrei: /* Cerința */</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1107_-_Reflex&amp;diff=5530&amp;oldid=prev"/>
		<updated>2023-04-29T16:55:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerința&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:55, 29 April 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La un concurs de robotică, în timpul prezentării, un roboţel cu corp cilindric cu diametrul de o unitate scapă de sub control şi se deplasează într-un ring de formă dreptunghiulară. Ringul este împărţit în &amp;#039;&amp;#039;&amp;#039;N x M&amp;#039;&amp;#039;&amp;#039; pătrate identice, cu latura de o unitate, aşezate pe &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; coloane.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La un concurs de robotică, în timpul prezentării, un roboţel cu corp cilindric cu diametrul de o unitate scapă de sub control şi se deplasează într-un ring de formă dreptunghiulară. Ringul este împărţit în &amp;#039;&amp;#039;&amp;#039;N x M&amp;#039;&amp;#039;&amp;#039; pătrate identice, cu latura de o unitate, aşezate pe &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; coloane.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Robotul poate părăsi ringul numai pe la colţuri, acestea fiind numerotate de la 1 la 4, colţul cu numărul 1 fiind cel din stânga jos apoi restul fiind numerotate în sens trigonometric. Suprafaţa ringului este delimitată de exterior prin intermediul a patru pereţi despărţitori: doi pereţi “verticali” (aşezaţi de la colţul 1 la colţul 4, respectiv de la colţul 2 la colţul 3) şi doi pereţi “orizontali” (aşezaţi de la colţul 1 la colţul 2, respectiv de la colţul 3 la colţul 4), fără a bloca ieşirile, ca în desenul alăturat.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Robotul poate părăsi ringul numai pe la colţuri, acestea fiind numerotate de la &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;1&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039; &lt;/ins&gt;la &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;4&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;&lt;/ins&gt;, colţul cu numărul 1 fiind cel din stânga jos apoi restul fiind numerotate în sens trigonometric. Suprafaţa ringului este delimitată de exterior prin intermediul a patru pereţi despărţitori: doi pereţi “verticali” (aşezaţi de la colţul 1 la colţul 4, respectiv de la colţul 2 la colţul 3) şi doi pereţi “orizontali” (aşezaţi de la colţul 1 la colţul 2, respectiv de la colţul 3 la colţul 4), fără a bloca ieşirile, ca în desenul alăturat.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Robotul pătrunde în ring prin colţul cu numărul 1 sub un unghi de 45 grade şi cu o viteză de un pătrat/s. Ciocnirile cu pereţii sunt considerate perfect elastice (robotul nu-şi pierde din viteză) iar unghiul de incidenţă este egal cu cel de reflexie.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Robotul pătrunde în ring prin colţul cu numărul 1 sub un unghi de 45 grade şi cu o viteză de un pătrat/s. Ciocnirile cu pereţii sunt considerate perfect elastice (robotul nu-şi pierde din viteză) iar unghiul de incidenţă este egal cu cel de reflexie.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sovago Rares-Andrei</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=1107_-_Reflex&amp;diff=3033&amp;oldid=prev</id>
		<title>Sovago Rares-Andrei: Pagină nouă: ==Cerința==  La un concurs de robotică, în timpul prezentării, un roboţel cu corp cilindric cu diametrul de o unitate scapă de sub control şi se deplasează într-un ring de formă dreptunghiulară. Ringul este împărţit în &#039;&#039;&#039;N x M&#039;&#039;&#039; pătrate identice, cu latura de o unitate, aşezate pe &#039;&#039;&#039;N&#039;&#039;&#039; linii şi &#039;&#039;&#039;M&#039;&#039;&#039; coloane.  Robotul poate părăsi ringul numai pe la colţuri, acestea fiind numerotate de la 1 la 4, colţul cu numărul 1 fiind cel din stânga jos apoi...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1107_-_Reflex&amp;diff=3033&amp;oldid=prev"/>
		<updated>2023-04-06T16:54:36Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Cerința==  La un concurs de robotică, în timpul prezentării, un roboţel cu corp cilindric cu diametrul de o unitate scapă de sub control şi se deplasează într-un ring de formă dreptunghiulară. Ringul este împărţit în &amp;#039;&amp;#039;&amp;#039;N x M&amp;#039;&amp;#039;&amp;#039; pătrate identice, cu latura de o unitate, aşezate pe &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; coloane.  Robotul poate părăsi ringul numai pe la colţuri, acestea fiind numerotate de la 1 la 4, colţul cu numărul 1 fiind cel din stânga jos apoi...&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;
&lt;br /&gt;
La un concurs de robotică, în timpul prezentării, un roboţel cu corp cilindric cu diametrul de o unitate scapă de sub control şi se deplasează într-un ring de formă dreptunghiulară. Ringul este împărţit în &amp;#039;&amp;#039;&amp;#039;N x M&amp;#039;&amp;#039;&amp;#039; pătrate identice, cu latura de o unitate, aşezate pe &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; linii şi &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039; coloane.&lt;br /&gt;
&lt;br /&gt;
Robotul poate părăsi ringul numai pe la colţuri, acestea fiind numerotate de la 1 la 4, colţul cu numărul 1 fiind cel din stânga jos apoi restul fiind numerotate în sens trigonometric. Suprafaţa ringului este delimitată de exterior prin intermediul a patru pereţi despărţitori: doi pereţi “verticali” (aşezaţi de la colţul 1 la colţul 4, respectiv de la colţul 2 la colţul 3) şi doi pereţi “orizontali” (aşezaţi de la colţul 1 la colţul 2, respectiv de la colţul 3 la colţul 4), fără a bloca ieşirile, ca în desenul alăturat.&lt;br /&gt;
&lt;br /&gt;
Robotul pătrunde în ring prin colţul cu numărul 1 sub un unghi de 45 grade şi cu o viteză de un pătrat/s. Ciocnirile cu pereţii sunt considerate perfect elastice (robotul nu-şi pierde din viteză) iar unghiul de incidenţă este egal cu cel de reflexie.&lt;br /&gt;
Se cere să se determine:&lt;br /&gt;
&lt;br /&gt;
a) după câte secunde și prin ce colţ al ringului va ieşi robotul;&lt;br /&gt;
b) de câte ori se ciocneşte robotul de pereţii orizontali şi verticali, rezultând o schimbare de direcţie, până la ieşirea din ring.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;reflex.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie două numere naturale &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;M&amp;#039;&amp;#039;&amp;#039;, separate printr-un singur spaţiu.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt introduse corect.&amp;quot; Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;reflex.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie două numere naturale &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;, separate printr-un singur spațiu, &amp;#039;&amp;#039;&amp;#039;S&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de secunde după care robotul va ieşi din ring, iar &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039; reprezintă numărul colţului prin care acesta va ieşi. Pe a doua linie, fişierul de ieşire va conține două numere naturale &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039; şi &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039;, separate printr-un spaţiu, &amp;#039;&amp;#039;&amp;#039;H&amp;#039;&amp;#039;&amp;#039; reprezentând numărul de ciocniri cu pereţii orizontali ai ringului, iar &amp;#039;&amp;#039;&amp;#039;V&amp;#039;&amp;#039;&amp;#039; numărul de ciocniri cu pereţii verticali. În cazul în care datele nu respectă restricțiile, se va afișa: &amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
*3 ≤ N, M ≤ 2 000 000 000&lt;br /&gt;
== Exemple ==&lt;br /&gt;
===Exemplul 1===&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.in&amp;#039;&amp;#039;&lt;br /&gt;
:5 7&lt;br /&gt;
; &amp;#039;&amp;#039;ecran&amp;#039;&amp;#039;&lt;br /&gt;
:Datele sunt introduse corect.&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.out&amp;#039;&amp;#039;&lt;br /&gt;
:13 4&lt;br /&gt;
:2 1&lt;br /&gt;
&lt;br /&gt;
===Exemplul 2===&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.in&amp;#039;&amp;#039;&lt;br /&gt;
:3 6&lt;br /&gt;
; &amp;#039;&amp;#039;ecran&amp;#039;&amp;#039;&lt;br /&gt;
:Datele sunt introduse corect.&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.out&amp;#039;&amp;#039;&lt;br /&gt;
:11 4&lt;br /&gt;
:4 1&lt;br /&gt;
===Exemplul 3===&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.in&amp;#039;&amp;#039;&lt;br /&gt;
:3 6000000000000000&lt;br /&gt;
; &amp;#039;&amp;#039;ecran&amp;#039;&amp;#039;&lt;br /&gt;
:Datele nu corespund restricțiilor impuse.&lt;br /&gt;
; &amp;#039;&amp;#039;reflex.out&amp;#039;&amp;#039;&lt;br /&gt;
:&lt;br /&gt;
&amp;lt;br&amp;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;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
# 1107 - Reflex&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def valideaza_input(a, b):&lt;br /&gt;
    if not isinstance(a, int) or not isinstance(b, int) or a &amp;lt; 3 or b &amp;lt; 3 or a &amp;gt; 2000000000 or b &amp;gt; 2000000000:&lt;br /&gt;
        print(&amp;quot;Datele nu corespund restricțiilor impuse.&amp;quot;)&lt;br /&gt;
        sys.exit(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def rezolva(a, b):&lt;br /&gt;
    valideaza_input(a, b)&lt;br /&gt;
    a1 = a - 1&lt;br /&gt;
    b1 = b - 1&lt;br /&gt;
    r = b1&lt;br /&gt;
    while r != 0:&lt;br /&gt;
        r = a1 % b1&lt;br /&gt;
        a1 = b1&lt;br /&gt;
        b1 = r&lt;br /&gt;
    x = (b - 1) // a1&lt;br /&gt;
    y = (a - 1) // a1&lt;br /&gt;
    c = [2, 4, 3][y % 2 + (x % 2) * 2 - 1]&lt;br /&gt;
    s = y * (b - 1)&lt;br /&gt;
    with open(&amp;#039;reflex.out&amp;#039;, &amp;#039;w&amp;#039;) as f:&lt;br /&gt;
        f.write(str(s + 1) + &amp;#039; &amp;#039; + str(c) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
        f.write(str(x - 1) + &amp;#039; &amp;#039; + str(y - 1) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
   &lt;br /&gt;
    with open(&amp;#039;reflex.in&amp;#039;, &amp;#039;r&amp;#039;) as f:&lt;br /&gt;
        a, b = map(int, f.readline().strip().split())&lt;br /&gt;
    valideaza_input(a, b)&lt;br /&gt;
    print(&amp;quot;Datele sunt introduse corect.&amp;quot;)&lt;br /&gt;
    rezolva(a, b)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Explicatie==&lt;br /&gt;
&lt;br /&gt;
valideaza_input(a, b): Această funcție primește doi parametri întregi, a și b, care reprezintă dimensiunile ringului. Funcția verifică dacă valorile acestor parametri respectă restricțiile impuse, adică 3 ≤ a, b ≤ 2 000 000 000. Dacă valorile nu respectă restricțiile, atunci funcția afișează un mesaj de eroare și iese din program cu sys.exit(0). Dacă valorile sunt valide, funcția nu face nimic și iese cu succes.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
rezolva(a, b): Această funcție primește doi parametri întregi, a și b, care reprezintă dimensiunile ringului. Funcția rezolvă problema descrisă și scrie rezultatul în fișierul reflex.out. Mai întâi, funcția validează datele de intrare utilizând funcția valideaza_input(a, b). Apoi, funcția calculează cmmdc-ul lui a-1 și b-1 și folosește acest rezultat pentru a calcula valorile necesare pentru rezolvarea problemei. Funcția scrie rezultatul în fișierul reflex.out sub forma unui număr de secunde (S), un număr de colț (C), un număr de ciocniri cu pereții orizontali (H) și un număr de ciocniri cu pereții verticali (V).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
main(): Această funcție citește datele de intrare din fișierul reflex.in, validează datele utilizând funcția valideaza_input(a, b) și afișează un mesaj corespunzător pe ecran. Apoi, funcția rezolvă problema utilizând funcția rezolva(a, b) și scrie rezultatul în fișierul reflex.out. Această funcție este apelată automat de Python la rularea programului.&lt;/div&gt;</summary>
		<author><name>Sovago Rares-Andrei</name></author>
	</entry>
</feed>