<?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=2094_-_Actualizare_Element%2C_CMMDC_Interval</id>
	<title>2094 - Actualizare Element, CMMDC Interval - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2094_-_Actualizare_Element%2C_CMMDC_Interval"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2094_-_Actualizare_Element,_CMMDC_Interval&amp;action=history"/>
	<updated>2026-05-01T21:51:59Z</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=2094_-_Actualizare_Element,_CMMDC_Interval&amp;diff=9968&amp;oldid=prev</id>
		<title>AjM: Pagină nouă: == Enunt == Se dă un șir de numere asupra căruia se pot face două tipuri de operații: actualizare a unui element (schimbarea valorii sale) și interogarea unui interval de indici (determinarea celui mai mare divizor comun pentru valorile aflate între cei doi indici, inclusiv). == Cerinţa == Afișați răspunsul la fiecare interogare. == Date de intrare == Prima linie a fisierului aecmmdci.in conține un număr N, ce reprezintă lungimea șirului dat. Linia a doua conț...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2094_-_Actualizare_Element,_CMMDC_Interval&amp;diff=9968&amp;oldid=prev"/>
		<updated>2024-06-03T15:42:33Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Se dă un șir de numere asupra căruia se pot face două tipuri de operații: actualizare a unui element (schimbarea valorii sale) și interogarea unui interval de indici (determinarea celui mai mare divizor comun pentru valorile aflate între cei doi indici, inclusiv). == Cerinţa == Afișați răspunsul la fiecare interogare. == Date de intrare == Prima linie a fisierului aecmmdci.in conține un număr N, ce reprezintă lungimea șirului dat. Linia a doua conț...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Se dă un șir de numere asupra căruia se pot face două tipuri de operații: actualizare a unui element (schimbarea valorii sale) și interogarea unui interval de indici (determinarea celui mai mare divizor comun pentru valorile aflate între cei doi indici, inclusiv).&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Afișați răspunsul la fiecare interogare.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Prima linie a fisierului aecmmdci.in conține un număr N, ce reprezintă lungimea șirului dat. Linia a doua conține, separate prin câte un spațiu, elementele șirului dat. Pe linia a treia se află un număr M ce reprezintă numărul de operații ce se efectuează asupra șirului dat. Pe fiecare din următoarele M linii se găsesc câte 3 numere naturale separate prin câte un spațiu: T A B. Dacă T = 1 operația este de interogare iar A și B sunt capetele inrervalului. Dacă T = 2 operația este de actualizare cu semnificația: elementul de pe poziția A devine B.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul aecmmdci.out conține pe câte o linie răspunsul la căte o operațe de tip 1, în ordinea în care acestea apar în datele de intrare.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 ≤ N ≤ 100000&lt;br /&gt;
* 1 ≤ M ≤ 100000&lt;br /&gt;
* 1 ≤ A ≤ B ≤ N&lt;br /&gt;
* elementele șirului dat sunt indexate de la 1&lt;br /&gt;
* elementele șirului dat, precum și cele de la operațiile de actualizare, sunt strict pozitive &amp;lt;= 2000000000&lt;br /&gt;
== Exemplu ==&lt;br /&gt;
; aecmmdci.in&lt;br /&gt;
 5&lt;br /&gt;
 2 12 6 9 8&lt;br /&gt;
 3&lt;br /&gt;
 1 2 4&lt;br /&gt;
 2 4 2&lt;br /&gt;
 1 2 4&lt;br /&gt;
; aecmmdci.out&lt;br /&gt;
 3&lt;br /&gt;
 2&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
def gcd(a, b):&lt;br /&gt;
    while b:&lt;br /&gt;
        a, b = b, a % b&lt;br /&gt;
    return a&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;aecmmdci.in&amp;quot;, &amp;quot;r&amp;quot;) as fin, open(&amp;quot;aecmmdci.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        n = int(fin.readline())&lt;br /&gt;
        arr = list(map(int, fin.readline().split()))&lt;br /&gt;
        last_update = {i + 1: val for i, val in enumerate(arr)}&lt;br /&gt;
&lt;br /&gt;
        m = int(fin.readline())&lt;br /&gt;
        for _ in range(m):&lt;br /&gt;
            op, a, b = map(int, fin.readline().split())&lt;br /&gt;
            if op == 1:&lt;br /&gt;
                result = gcd(last_update[a], last_update[b])&lt;br /&gt;
                fout.write(f&amp;quot;{result}\n&amp;quot;)&lt;br /&gt;
            elif op == 2:&lt;br /&gt;
                last_update[a] = b&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>AjM</name></author>
	</entry>
</feed>