<?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=2751_-_BB_Security</id>
	<title>2751 - BB Security - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2751_-_BB_Security"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2751_-_BB_Security&amp;action=history"/>
	<updated>2026-05-01T09:07: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=2751_-_BB_Security&amp;diff=8788&amp;oldid=prev</id>
		<title>Corjuc Eunice: Pagină nouă: Domnul &lt;code&gt;X&lt;/code&gt; lucrează la BB Security ca paznic.  Deoarece în România sunt foarte puțini hoți, acesta s-a gândit într-o zi să calculeze distanța dintre fiecare doi stâlpi de îngrădire din instituția pe care o păzește. Fiecare doi stâlpi de îngrădire sunt legați printr-un cablu rezistent, care, de obicei nu stă întins la maximum.  Din cauză ca în instituție se găsesc mulți stâlpi, domnul &lt;code&gt;X&lt;/code&gt; vă provoacă pe voi să calculați ce...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2751_-_BB_Security&amp;diff=8788&amp;oldid=prev"/>
		<updated>2024-01-02T19:54:43Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; lucrează la BB Security ca paznic.  Deoarece în România sunt foarte puțini hoți, acesta s-a gândit într-o zi să calculeze distanța dintre fiecare doi stâlpi de îngrădire din instituția pe care o păzește. Fiecare doi stâlpi de îngrădire sunt legați printr-un cablu rezistent, care, de obicei nu stă întins la maximum.  Din cauză ca în instituție se găsesc mulți stâlpi, domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; vă provoacă pe voi să calculați ce...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; lucrează la BB Security ca paznic.&lt;br /&gt;
&lt;br /&gt;
Deoarece în România sunt foarte puțini hoți, acesta s-a gândit într-o zi să calculeze distanța dintre fiecare doi stâlpi de îngrădire din instituția pe care o păzește. Fiecare doi stâlpi de îngrădire sunt legați printr-un cablu rezistent, care, de obicei nu stă întins la maximum.&lt;br /&gt;
&lt;br /&gt;
Din cauză ca în instituție se găsesc mulți stâlpi, domnul &amp;lt;code&amp;gt;X&amp;lt;/code&amp;gt; vă provoacă pe voi să calculați ce și-a propus el.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Se dă un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; triplete de forma &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, reprezentând lungimea egala a doi stâlpi, lungimea cablului dintre acestea și înălțimea la care atârnă cablul față de podea.&lt;br /&gt;
&lt;br /&gt;
Se cere să se afle distanța dintre fiecare doi stâlpi.&lt;br /&gt;
&lt;br /&gt;
Fiecare rezultat va fi afișat pe cate un rând nou.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Programul citește de la tastatură un număr &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; și apoi &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; triplete de forma &amp;lt;code&amp;gt;l&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;c&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;h&amp;lt;/code&amp;gt;, cu semnificația de mai sus.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Programul va afișa pe linia &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; a ecranului un număr de forma &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; care reprezintă lungimea dintre cei doi stâlpi, corespunzătoare datelor de pe linia &amp;lt;code&amp;gt;n+1&amp;lt;/code&amp;gt; din consola de citire, cu exact două zecimale, indiferent de caz, rotunjind a doua zecimală în comparație cu cea de-a treia, sau, dacă a doua zecimală este &amp;lt;code&amp;gt;5&amp;lt;/code&amp;gt;, zecimala a doua va crește cu o unitate doar dacă există încă una sau mai multe zecimale după cea de-a treia și măcar una din ele este &amp;lt;code&amp;gt;&amp;gt; 0&amp;lt;/code&amp;gt; (vezi Restricții).&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 100.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* cele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; numere citite vor fi mai mici decât &amp;lt;code&amp;gt;1.000.000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;n, l, c, h&amp;lt;/code&amp;gt; sunt numere naturale;&lt;br /&gt;
* este garantat că pentru orice triplet citit există un număr &amp;lt;code&amp;gt;0 ≤ x ≤ c&amp;lt;/code&amp;gt;;&lt;br /&gt;
* cea de-a doua zecimala se rotunjește de obicei după cea de-a treia (ex. &amp;lt;code&amp;gt;49.4376&amp;lt;/code&amp;gt; se va afișa ca &amp;lt;code&amp;gt;49.44&amp;lt;/code&amp;gt;);&lt;br /&gt;
* ∀ &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;| &amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt; ∈ ℕ, acesta se va afișa ca &amp;lt;code&amp;gt;a.00&amp;lt;/code&amp;gt; (ex. &amp;lt;code&amp;gt;50&amp;lt;/code&amp;gt; se va afișa ca &amp;lt;code&amp;gt;50.00&amp;lt;/code&amp;gt;);&lt;br /&gt;
* Atenție! &amp;lt;code&amp;gt;23.455 = 23.45 , 23.45501 = 23.46&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
2&lt;br /&gt;
&lt;br /&gt;
60 100 20&lt;br /&gt;
&lt;br /&gt;
100 50 100&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
49.44&lt;br /&gt;
&lt;br /&gt;
50.00&lt;br /&gt;
&lt;br /&gt;
Explicație:&lt;br /&gt;
&lt;br /&gt;
Pentru primul triplet lungimea dintre cei doi stâlpi este &amp;lt;code&amp;gt;49.44&amp;lt;/code&amp;gt;, iar pentru al doilea cablul este întins la maximum și lungimea dintre cei doi stâlpi este &amp;lt;code&amp;gt;50.00&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
Input:&lt;br /&gt;
&lt;br /&gt;
1&lt;br /&gt;
&lt;br /&gt;
34 7.2 9.1&lt;br /&gt;
&lt;br /&gt;
Output:&lt;br /&gt;
&lt;br /&gt;
Numerele trebuie să fie naturale.&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
import math&lt;br /&gt;
&lt;br /&gt;
def verifica_conditii(n, tests):&lt;br /&gt;
    results = []&lt;br /&gt;
    &lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        l, c, h = tests[i]&lt;br /&gt;
        &lt;br /&gt;
        # Verificare dacă numerele sunt naturale&lt;br /&gt;
        if not all(map(lambda x: x.is_integer() and x &amp;gt;= 0, [l, c, h])):&lt;br /&gt;
            results.append(&amp;quot;Numerele trebuie să fie naturale.&amp;quot;)&lt;br /&gt;
            continue&lt;br /&gt;
&lt;br /&gt;
        if h == l:&lt;br /&gt;
            results.append(f&amp;quot;{int(c):.2f}&amp;quot;)&lt;br /&gt;
        elif c / 2 + h == l:&lt;br /&gt;
            results.append(&amp;quot;0.00&amp;quot;)&lt;br /&gt;
        else:&lt;br /&gt;
            a = ((c**2 / 4) - (l - h)**2) / (2 * (l - h))&lt;br /&gt;
            t1 = 2 * a * math.log(math.sqrt((c**2 / 4) / (a**2) + 1) + (c / 2) / a)&lt;br /&gt;
            &lt;br /&gt;
            # Rotunjirea valorilor conform specificațiilor&lt;br /&gt;
            rounded_t1 = round(t1, 2)&lt;br /&gt;
            if rounded_t1.is_integer():&lt;br /&gt;
                results.append(f&amp;quot;{int(rounded_t1)}.00&amp;quot;)&lt;br /&gt;
            else:&lt;br /&gt;
                results.append(f&amp;quot;{rounded_t1:.2f}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    return results&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    n = int(input())&lt;br /&gt;
    tests = []&lt;br /&gt;
    &lt;br /&gt;
    for _ in range(n):&lt;br /&gt;
        l, c, h = map(float, input().split())&lt;br /&gt;
        tests.append((l, c, h))&lt;br /&gt;
    &lt;br /&gt;
    results = verifica_conditii(n, tests)&lt;br /&gt;
    for result in results:&lt;br /&gt;
        print(result)&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>Corjuc Eunice</name></author>
	</entry>
</feed>