<?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=3044_-_Comun_1</id>
	<title>3044 - Comun 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3044_-_Comun_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3044_-_Comun_1&amp;action=history"/>
	<updated>2026-05-01T07:43:56Z</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=3044_-_Comun_1&amp;diff=10059&amp;oldid=prev</id>
		<title>RebecaBud: Pagină nouă: == Enunt == Tocmai ai primit un șir v de K numere naturale nenule distincte. Plecând de la acest șir, te-ai gândit să construiești un șir w de N numere naturale distincte, astfel încât un număr x este în șirul w dacă și numai dacă exista inițial în șirul v sau se pot alege cel puțin două numere din șirul v astfel încât x este cel mai mare divizor comun al acelor numere. De exemplu, dacă v = {4, 6, 7} atunci w = {1, 2, 4, 6, 7}. Uimit de proprietățile...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3044_-_Comun_1&amp;diff=10059&amp;oldid=prev"/>
		<updated>2024-06-03T17:53:09Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunt == Tocmai ai primit un șir v de K numere naturale nenule distincte. Plecând de la acest șir, te-ai gândit să construiești un șir w de N numere naturale distincte, astfel încât un număr x este în șirul w dacă și numai dacă exista inițial în șirul v sau se pot alege cel puțin două numere din șirul v astfel încât x este cel mai mare divizor comun al acelor numere. De exemplu, dacă v = {4, 6, 7} atunci w = {1, 2, 4, 6, 7}. Uimit de proprietățile...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunt ==&lt;br /&gt;
Tocmai ai primit un șir v de K numere naturale nenule distincte. Plecând de la acest șir, te-ai gândit să construiești un șir w de N numere naturale distincte, astfel încât un număr x este în șirul w dacă și numai dacă exista inițial în șirul v sau se pot alege cel puțin două numere din șirul v astfel încât x este cel mai mare divizor comun al acelor numere. De exemplu, dacă v = {4, 6, 7} atunci w = {1, 2, 4, 6, 7}.&lt;br /&gt;
Uimit de proprietățile matematice frumoase ale noului șir w, ai uitat din păcate șirul original v de la care ai pornit.&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Dându-se șirul w, să se găsească un șir posibil inițial v având un număr minim de elemente.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare comun.in conține pe prima linie un număr natural N. Pe cea de-a doua linie se află N numere naturale nenule distincte, în ordine strict crescătoare, reprezentând șirul w.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire comun.out va conține pe prima linie numărul minim K de elemente ale șirului v. Pe cea de-a doua linie se vor afla K numere naturale distincte, în ordine strict crescătoare, reprezentând șirul propriu-zis.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* Toate valorile din fișierul de intrare sunt numere naturale nenule mai mici sau egale cu 100.000.&lt;br /&gt;
* Pentru teste în valoare de 15 puncte, toate valorile din fișierul de intrare sunt mai mici sau egale cu 20.&lt;br /&gt;
* Pentru teste în valoare de 50 de puncte, toate valorile din fișierul de intrare sunt mai mici sau egale cu 2000.&lt;br /&gt;
* Se garantează că există măcar o soluție.&lt;br /&gt;
* Dacă există mai multe șiruri inițiale cu număr minim de elemente, oricare este acceptat.&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; comun.in&lt;br /&gt;
&lt;br /&gt;
  5&lt;br /&gt;
  1 2 4 6 7&lt;br /&gt;
; comun.out&lt;br /&gt;
&lt;br /&gt;
  3&lt;br /&gt;
  4 6 7&lt;br /&gt;
== Explicație ==&lt;br /&gt;
1 = cmmdc(6, 7) = cmmdc(4, 6, 7). 2 = cmmdc(4, 6). Se poate demonstra că orice alt șir cu proprietatea cerută are măcar 3 elemente.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; comun.in&lt;br /&gt;
&lt;br /&gt;
  4&lt;br /&gt;
  2 4 8 16&lt;br /&gt;
; comun.out&lt;br /&gt;
&lt;br /&gt;
  4&lt;br /&gt;
  2 4 8 16&lt;br /&gt;
== Explicație ==&lt;br /&gt;
Nu există niciun șir de mai puțin de 4 elemente cu proprietatea cerută.&lt;br /&gt;
&amp;lt;br&amp;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 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 find_initial_sequence(w):&lt;br /&gt;
    n = len(w)&lt;br /&gt;
    initial_sequence = []&lt;br /&gt;
    initial_sequence.append(w[0])&lt;br /&gt;
    for i in range(1, n):&lt;br /&gt;
        current_gcd = gcd(initial_sequence[-1], w[i])&lt;br /&gt;
        if current_gcd != w[i]:&lt;br /&gt;
            initial_sequence.append(w[i])&lt;br /&gt;
    return initial_sequence&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    with open(&amp;quot;comun.in&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
        n = int(f.readline())&lt;br /&gt;
        w = list(map(int, f.readline().split()))&lt;br /&gt;
&lt;br /&gt;
    initial_sequence = find_initial_sequence(w)&lt;br /&gt;
&lt;br /&gt;
    with open(&amp;quot;comun.out&amp;quot;, &amp;quot;w&amp;quot;) as f:&lt;br /&gt;
        f.write(str(len(initial_sequence)) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
        f.write(&amp;quot; &amp;quot;.join(map(str, initial_sequence)))&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>