<?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=3738_-_New_York</id>
	<title>3738 - New York - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3738_-_New_York"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3738_-_New_York&amp;action=history"/>
	<updated>2026-05-03T02:12:46Z</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=3738_-_New_York&amp;diff=9089&amp;oldid=prev</id>
		<title>Ramona Dragoș at 13:46, 5 January 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3738_-_New_York&amp;diff=9089&amp;oldid=prev"/>
		<updated>2024-01-05T13:46:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;//wiki.universitas.ro/index.php?title=3738_-_New_York&amp;amp;diff=9089&amp;amp;oldid=7877&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Ramona Dragoș</name></author>
	</entry>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=3738_-_New_York&amp;diff=7877&amp;oldid=prev</id>
		<title>Ramona Dragoș: Pagină nouă: == Cerința == Doru s-a mutat în New York și își caută o nouă locuință specială în perimetrul străzilor numerotate cu numerele distincte de la 1 la n. Fiind pasionat de matematică, el vrea să se mute pe strada în care cel mai mare divizor comun (cmmdc) al înălțimilor clădirilor este maxim.  În plus, alegerea clădirii nu este una ușoară, el dorind să se mute doar într-o clădire perfectă. Numim o clădire perfectă o clădire care are cea mai mare în...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3738_-_New_York&amp;diff=7877&amp;oldid=prev"/>
		<updated>2023-12-12T13:25:48Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Doru s-a mutat în New York și își caută o nouă locuință specială în perimetrul străzilor numerotate cu numerele distincte de la 1 la n. Fiind pasionat de matematică, el vrea să se mute pe strada în care cel mai mare divizor comun (cmmdc) al înălțimilor clădirilor este maxim.  În plus, alegerea clădirii nu este una ușoară, el dorind să se mute doar într-o clădire perfectă. Numim o clădire perfectă o clădire care are cea mai mare în...&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;
Doru s-a mutat în New York și își caută o nouă locuință specială în perimetrul străzilor numerotate cu numerele distincte de la 1 la n. Fiind pasionat de matematică, el vrea să se mute pe strada în care cel mai mare divizor comun (cmmdc) al înălțimilor clădirilor este maxim.&lt;br /&gt;
&lt;br /&gt;
În plus, alegerea clădirii nu este una ușoară, el dorind să se mute doar într-o clădire perfectă. Numim o clădire perfectă o clădire care are cea mai mare înălțime număr prim de pe strada pe care se află.&lt;br /&gt;
&lt;br /&gt;
Fiind ocupat cu împachetatul, Doru vă roagă pe voi să găsiți clădirea perfectă.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare nykin.txt conține pe prima linie numărul de străzi n pe care Doru își caută noua locuință.&lt;br /&gt;
Pe fiecare dintre următoarele n linii (câte una pentru fiecare stradă din cele n, în ordinea crescătoare a numerelor străzilor) se află numărul m, reprezentând numărul de clădiri de pe strada curentă, urmat de m numere ce reprezintă înălțimile clădirilor de pe strada curentă (în ordinea poziționării lor pe stradă, de la stânga la dreapta). Pe fiecare linie numerele sunt separate prin câte un spațiu.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire nykout.txt va conține două linii.&lt;br /&gt;
&lt;br /&gt;
Prima linie va conține două numere naturale separate printr-un spațiu, reprezentând numărul străzii cerute și poziția pe stradă a clădirii în care se va muta Doru.&lt;br /&gt;
&lt;br /&gt;
A doua linie va conține un număr natural reprezentând înălțimea clădirii alese.&lt;br /&gt;
&lt;br /&gt;
Dacă pe strada cu cmmdc-ul maxim nu se găsește nicio clădire cu înălțimea un număr prim, atunci prima linie a fișierului va conține mesajul Nu am gasit casa!&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
*1 &amp;amp;les; n &amp;amp;les; 1000&lt;br /&gt;
*1 &amp;amp;les; m &amp;amp;les; 1000&lt;br /&gt;
*Numerele de pe a doua linie a fișierului de intrare sunt mai mici decât 1 000 000 000&lt;br /&gt;
*Înălțimile clădirilor sunt numere naturale nenule mai mici ca 2 000 000 000.&lt;br /&gt;
*Pe fiecare stradă există cel puțin o clădire.&lt;br /&gt;
*Dacă pe strada cu cmmdc-ul maxim sunt mai multe clădiri perfecte, se va afișa cea mai din dreapta.&lt;br /&gt;
*Dacă sunt mai multe străzi cu aceeași clădire perfectă, se va afișa cea care are numărul străzii cel mai mare.&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
;nykin.txt&lt;br /&gt;
:5&lt;br /&gt;
:2 1 2&lt;br /&gt;
:3 18 6 48&lt;br /&gt;
:2 5 7&lt;br /&gt;
:4 3 6 9 12&lt;br /&gt;
:4 34 17 68 17&lt;br /&gt;
;nykout.txt&lt;br /&gt;
:5 4&lt;br /&gt;
:17&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Explicatie ==&lt;br /&gt;
Valoarea maximă a celui mai mare divizor comun al înălțimilor clădirilor de pe o stradă dintre cele cinci este 17 (cmmdc(1,2)=1, cmmdc(18, 6, 48)=6, cmmdc(5, 7)=1, cmmdc(3, 6, 9, 12)=3, cmmdc(34, 17, 68, 17)=17). Astfel Doru va alege clădirea a 4-a de pe strada cu numărul 5.&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
;nykin.txt&lt;br /&gt;
:0&lt;br /&gt;
:-1 -3&lt;br /&gt;
;nykut.txt&lt;br /&gt;
:Nu au fost respectate cerintele impuse&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;
#3738 - New York&lt;br /&gt;
def check_restrictions(n, m_values):&lt;br /&gt;
    if not (1 &amp;lt;= n &amp;lt;= 1000):&lt;br /&gt;
        return False&lt;br /&gt;
&lt;br /&gt;
    for m, *heights in m_values:&lt;br /&gt;
        if not (1 &amp;lt;= m &amp;lt;= 1000):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
        if not all(0 &amp;lt; height &amp;lt; 2000000000 for height in heights):&lt;br /&gt;
            return False&lt;br /&gt;
&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def find_perfect_building(n, m_values):&lt;br /&gt;
    if not check_restrictions(n, m_values):&lt;br /&gt;
        print(&amp;quot;Date de intrare invalide!&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    max_gcd = 0&lt;br /&gt;
    selected_street = 0&lt;br /&gt;
    selected_position = 0&lt;br /&gt;
&lt;br /&gt;
    for street, *heights in m_values:&lt;br /&gt;
        current_gcd = heights[0]&lt;br /&gt;
        for height in heights[1:]:&lt;br /&gt;
            current_gcd = gcd(current_gcd, height)&lt;br /&gt;
&lt;br /&gt;
        if current_gcd &amp;gt; max_gcd:&lt;br /&gt;
            max_gcd = current_gcd&lt;br /&gt;
            selected_street = street&lt;br /&gt;
            selected_position = len(heights)&lt;br /&gt;
&lt;br /&gt;
        elif current_gcd == max_gcd and street &amp;gt;= selected_street:&lt;br /&gt;
            selected_street = street&lt;br /&gt;
            selected_position = len(heights)&lt;br /&gt;
&lt;br /&gt;
    if max_gcd == 1:&lt;br /&gt;
        print(&amp;quot;Nu am gasit casa!&amp;quot;)&lt;br /&gt;
        return None&lt;br /&gt;
&lt;br /&gt;
    return selected_street, selected_position, max_gcd&lt;br /&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;
# Citire date de intrare&lt;br /&gt;
try:&lt;br /&gt;
    with open(&amp;quot;nykin.txt&amp;quot;, &amp;quot;r&amp;quot;) as file:&lt;br /&gt;
        n = int(file.readline())&lt;br /&gt;
        m_values = [list(map(int, line.split())) for line in file.readlines()]&lt;br /&gt;
except FileNotFoundError:&lt;br /&gt;
    print(&amp;quot;Fisierul de intrare nu exista!&amp;quot;)&lt;br /&gt;
    exit()&lt;br /&gt;
&lt;br /&gt;
# Calcul și scriere rezultat în fișierul de ieșire&lt;br /&gt;
result = find_perfect_building(n, m_values)&lt;br /&gt;
if result is not None:&lt;br /&gt;
    with open(&amp;quot;nykout.txt&amp;quot;, &amp;quot;w&amp;quot;) as file:&lt;br /&gt;
        file.write(f&amp;quot;{result[0]} {result[1]}\n{result[2]}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ramona Dragoș</name></author>
	</entry>
</feed>