<?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=1040_-_Clepsidru</id>
	<title>1040 - Clepsidru - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1040_-_Clepsidru"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1040_-_Clepsidru&amp;action=history"/>
	<updated>2026-05-01T03:50:10Z</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=1040_-_Clepsidru&amp;diff=10176&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: O &#039;&#039;&#039;clepsidră&#039;&#039;&#039; este un dispozitiv folosit pentru a măsura timpul. Clepsidra este alcătuită din două incinte de sticlă, conectate printr-un tub fin. Una dintre incinte este umplută cu nisip, acesta scurgându-se în cea de-a doua incintă, cu o viteză constantă. Clepsidra poate fi întoarsă, pentru a măsura o altă perioadă de timp.  Arheologii au descoperit un dispozitiv, pe care l-au denumit &#039;&#039;&#039;clepsidru&#039;&#039;&#039;, format din &lt;code&gt;n&lt;/code&gt; clepsidre identice, suprap...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1040_-_Clepsidru&amp;diff=10176&amp;oldid=prev"/>
		<updated>2024-07-25T12:33:50Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: O &amp;#039;&amp;#039;&amp;#039;clepsidră&amp;#039;&amp;#039;&amp;#039; este un dispozitiv folosit pentru a măsura timpul. Clepsidra este alcătuită din două incinte de sticlă, conectate printr-un tub fin. Una dintre incinte este umplută cu nisip, acesta scurgându-se în cea de-a doua incintă, cu o viteză constantă. Clepsidra poate fi întoarsă, pentru a măsura o altă perioadă de timp.  Arheologii au descoperit un dispozitiv, pe care l-au denumit &amp;#039;&amp;#039;&amp;#039;clepsidru&amp;#039;&amp;#039;&amp;#039;, format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; clepsidre identice, suprap...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;O &amp;#039;&amp;#039;&amp;#039;clepsidră&amp;#039;&amp;#039;&amp;#039; este un dispozitiv folosit pentru a măsura timpul. Clepsidra este alcătuită din două incinte de sticlă, conectate printr-un tub fin. Una dintre incinte este umplută cu nisip, acesta scurgându-se în cea de-a doua incintă, cu o viteză constantă. Clepsidra poate fi întoarsă, pentru a măsura o altă perioadă de timp.&lt;br /&gt;
&lt;br /&gt;
Arheologii au descoperit un dispozitiv, pe care l-au denumit &amp;#039;&amp;#039;&amp;#039;clepsidru&amp;#039;&amp;#039;&amp;#039;, format din &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; clepsidre identice, suprapuse, numerotate de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, prin care nisipul poate circula de la o clepsidră la alta datorită forţei gravitaţionale.&lt;br /&gt;
&lt;br /&gt;
Studiind acest obiect, arheologii au constatat că :&lt;br /&gt;
&lt;br /&gt;
* dispozitivul poate fi utilizat atât în poziţia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, când clepsidrele sunt în ordinea &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; ,…, &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; cu clepsidra &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; aşezată pe sol, cât şi în poziţia &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;, când clepsidrele sunt în ordinea &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;n-1&amp;lt;/code&amp;gt;,…, &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; cu clepsidra &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; aşezată pe sol;&lt;br /&gt;
* viteza de trecere a nisipului de la o incintă la alta, a aceleiaşi clepsidre, este de &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; bob de nisip/secundă, pentru toate clepsidrele, indiferent de poziţie;&lt;br /&gt;
* trecerea clepsidrului dintr-o poziţie în alta presupune răsturnarea acestuia şi reaşezarea boabelor de nisip;&lt;br /&gt;
* timpul de trecere a boabelor de nisip de la o clepsidră la alta este 0.&lt;br /&gt;
&lt;br /&gt;
Arheologii studiază comportarea clepsidrului realizând două experimente diferite, după cum urmează:&lt;br /&gt;
&lt;br /&gt;
a) Se aşează clepsidrul în poziţia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, se introduc în incinta de sus a clepsidrei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; un număr &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; de boabe de nisip şi se determină după câte secunde vor ajunge toate boabele de nisip în incinta de jos a ultimei clepsidre;&lt;br /&gt;
&lt;br /&gt;
b) Se aşează clepsidrul în poziţia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, se introduc în incinta de sus a clepsidrei &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; un număr &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; de boabe de nisip, apoi se aşează clepsidrul în &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; stări consecutive, o stare fiind caracterizată de valorile &amp;lt;code&amp;gt;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;p&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;1 ≤ i ≤ k&amp;lt;/code&amp;gt;, ce reprezintă numărul de secunde, respectiv poziţia, în care este menţinut nemişcat clepsidrul, iar la final se determină numărul de boabe de nisip din incintele fiecărei clepsidre.&lt;br /&gt;
&lt;br /&gt;
Spre exemplu, dacă clepsidrul este format din &amp;lt;code&amp;gt;n=2&amp;lt;/code&amp;gt; clepsidre, iar în incinta de sus a primei clepsidre se introduc &amp;lt;code&amp;gt;b=3&amp;lt;/code&amp;gt; boabe de nisip, la primul experiment se va obţine valoarea &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
La al doilea experiment se aşează clepsidrul în &amp;lt;code&amp;gt;k=2&amp;lt;/code&amp;gt; stări, caracterizate prin  &amp;lt;code&amp;gt;s&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;=3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;=1&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;s&amp;lt;sub&amp;gt;2=1&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;sub&amp;gt;, &amp;lt;code&amp;gt;p2=2&amp;lt;/code&amp;gt;.&amp;lt;/sub&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Numărul de boabe de nisip din clepsidre va evolua ca în figura alăturată.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Să se scrie un program care citeşte valorile &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, precum şi valorile &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;p&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; , &amp;lt;code&amp;gt;1 ≤ i ≤ k&amp;lt;/code&amp;gt;, şi calculează valorile obţinute de arheologi la realizarea celor două experimente.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;clepsidru.in&amp;lt;/code&amp;gt; conține pe prima linie două numere naturale nenule &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt;, separate printr-un singur spaţiu, cu semnificaţia din enunţ; a doua linie conţine numărul natural nenul &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; având semnificaţia din enunţ, iar următoarele &amp;lt;code&amp;gt;k&amp;lt;/code&amp;gt; linii conţin fiecare câte o pereche de valori &amp;lt;code&amp;gt;s&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;p&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ k&amp;lt;/code&amp;gt;, separate printr-un singur spaţiu, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;clepsidru.out&amp;lt;/code&amp;gt; va conține pe prima linie un număr natural ce reprezintă valoarea obţinută la primul experiment, iar pe următoarele &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; linii va conţine câte o pereche de numere naturale, separate printr-un singur spaţiu, ce reprezintă cantităţile de boabe de nisip din incintele de sus şi de jos ale celor &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; clepsidre, scrise în ordinea de la &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; la &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; a clepsidrelor, după realizarea celui de-al doilea experiment.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ n ≤ 1 000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ b ≤ 1 000 000 000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ k ≤ 1 000&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;1 ≤ si ≤ 1 000&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ k&amp;lt;/code&amp;gt;;&lt;br /&gt;
* &amp;lt;code&amp;gt;p&amp;lt;sub&amp;gt;i&amp;lt;/sub&amp;gt;&amp;lt;/code&amp;gt; aparține &amp;lt;code&amp;gt;{1, 2}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;1 ≤ i ≤ k&amp;lt;/code&amp;gt;;&lt;br /&gt;
* pentru rezolvarea corectă a primei cerinţe se acordă &amp;lt;code&amp;gt;25%&amp;lt;/code&amp;gt; din punctaj, iar pentru rezolvarea corectă a celei de-a doua cerinţe se acordă &amp;lt;code&amp;gt;75%&amp;lt;/code&amp;gt; din punctaj.&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;clepsidru.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 2 3&lt;br /&gt;
 2&lt;br /&gt;
 3 1&lt;br /&gt;
 1 2&lt;br /&gt;
&amp;lt;code&amp;gt;clepsidru.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 4&lt;br /&gt;
 1 1&lt;br /&gt;
 0 1&lt;br /&gt;
&lt;br /&gt;
= Explicație =&lt;br /&gt;
&lt;br /&gt;
* Clepsidrul este format din &amp;lt;code&amp;gt;n=2&amp;lt;/code&amp;gt; clepsidre şi în incinta de sus a primei clepsidre se introduc &amp;lt;code&amp;gt;b=3&amp;lt;/code&amp;gt; boabe de nisip.&lt;br /&gt;
* Toate boabele de nisip vor ajunge în incinta de jos a ultimei clepsidre după &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; secunde.&lt;br /&gt;
* După ce clepsidrul este aşezat &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt; secunde în poziţia &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; şi &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; secundă în poziţia &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;,  în clepsidre se vor găsi câte &amp;lt;code&amp;gt;(1,1)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;(0,1)&amp;lt;/code&amp;gt; boabe de nisip&lt;br /&gt;
* &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def experiment1(n, b):&lt;br /&gt;
    return b + (n - 1)&lt;br /&gt;
&lt;br /&gt;
def experiment2(n, b, k, states):&lt;br /&gt;
    # Initializare&lt;br /&gt;
    clepsidre = [0] * n&lt;br /&gt;
    clepsidre[0] = b&lt;br /&gt;
    &lt;br /&gt;
    for si, pi in states:&lt;br /&gt;
        if pi == 1:  # poziția inițială&lt;br /&gt;
            for _ in range(si):&lt;br /&gt;
                for i in range(n-1, 0, -1):&lt;br /&gt;
                    transfer = min(clepsidre[i-1], 1)&lt;br /&gt;
                    clepsidre[i] += transfer&lt;br /&gt;
                    clepsidre[i-1] -= transfer&lt;br /&gt;
        elif pi == 2:  # poziția inversată&lt;br /&gt;
            for _ in range(si):&lt;br /&gt;
                for i in range(1, n):&lt;br /&gt;
                    transfer = min(clepsidre[i], 1)&lt;br /&gt;
                    clepsidre[i-1] += transfer&lt;br /&gt;
                    clepsidre[i] -= transfer&lt;br /&gt;
&lt;br /&gt;
    return clepsidre&lt;br /&gt;
&lt;br /&gt;
# Citirea input-ului&lt;br /&gt;
n = int(input(&amp;quot;Introduceti numarul de clepsidre: &amp;quot;))&lt;br /&gt;
b = int(input(&amp;quot;Introduceti numarul de boabe de nisip: &amp;quot;))&lt;br /&gt;
k = int(input(&amp;quot;Introduceti numarul de stari: &amp;quot;))&lt;br /&gt;
states = []&lt;br /&gt;
&lt;br /&gt;
for _ in range(k):&lt;br /&gt;
    si = int(input(&amp;quot;Introduceti numarul de secunde pentru starea curenta: &amp;quot;))&lt;br /&gt;
    pi = int(input(&amp;quot;Introduceti pozitia pentru starea curenta: &amp;quot;))&lt;br /&gt;
    states.append((si, pi))&lt;br /&gt;
&lt;br /&gt;
# Rezultatele experimentelor&lt;br /&gt;
timp_experiment1 = experiment1(n, b)&lt;br /&gt;
rezultat_experiment2 = experiment2(n, b, k, states)&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Timpul pentru experimentul 1: {timp_experiment1}&amp;quot;)&lt;br /&gt;
print(&amp;quot;Numarul de boabe de nisip in fiecare clepsidra dupa experimentul 2:&amp;quot;)&lt;br /&gt;
for i, boabe in enumerate(rezultat_experiment2, 1):&lt;br /&gt;
    print(f&amp;quot;Clepsidra {i}: {boabe} boabe&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RaulOtet</name></author>
	</entry>
</feed>