<?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=3086_-_densitate1</id>
	<title>3086 - densitate1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3086_-_densitate1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3086_-_densitate1&amp;action=history"/>
	<updated>2026-05-01T10:59:27Z</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=3086_-_densitate1&amp;diff=7747&amp;oldid=prev</id>
		<title>Vasiliu Costel Andrei: Pagină nouă: == Enunț == Cristi, deja familiarizat cu noțiunea de densitate de la orele de fizică, își propune să o studieze și din perspectiva informaticii. Astfel, el alege un șir de N numere naturale A[1], A[2], …, A[N] și își dorește să experimenteze.  == Cerința == Să se calculeze câte secvențe nevide au proprietatea că raportul dintre numărul elementelor pare din cadrul secvenței și lungimea secvenței este exact D.  == Date de intrare == În fișierul de intr...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3086_-_densitate1&amp;diff=7747&amp;oldid=prev"/>
		<updated>2023-12-10T19:45:27Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Cristi, deja familiarizat cu noțiunea de densitate de la orele de fizică, își propune să o studieze și din perspectiva informaticii. Astfel, el alege un șir de N numere naturale A[1], A[2], …, A[N] și își dorește să experimenteze.  == Cerința == Să se calculeze câte secvențe nevide au proprietatea că raportul dintre numărul elementelor pare din cadrul secvenței și lungimea secvenței este exact D.  == Date de intrare == În fișierul de intr...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Cristi, deja familiarizat cu noțiunea de densitate de la orele de fizică, își propune să o studieze și din perspectiva informaticii. Astfel, el alege un șir de N numere naturale A[1], A[2], …, A[N] și își dorește să experimenteze.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Să se calculeze câte secvențe nevide au proprietatea că raportul dintre numărul elementelor pare din cadrul secvenței și lungimea secvenței este exact D.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
În fișierul de intrare densitatein.txt, pe prima linie se află numărul N, ce reprezintă lungimea șirului de numere. Pe a doua linie se află, separate prin câte un spațiu, N numere naturale. Pe a treia linie se află densitatea D, reprezentată cu două zecimale exacte sub forma 0.ab.&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire densitateout.txt va conține o singură linie pe care se va afla numărul secvențelor ce respectă proprietatea din enunț.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;N&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 100.000&lt;br /&gt;
* 0 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;A[i]&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 1.000.000, 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; N&lt;br /&gt;
* 0 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;D&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 0.99&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; densitatein.txt&lt;br /&gt;
: 6&lt;br /&gt;
: 1 0 3 5 2 7&lt;br /&gt;
: 0.50&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; densitateout.txt&lt;br /&gt;
: 5&lt;br /&gt;
&lt;br /&gt;
=== Explicație ===&lt;br /&gt;
Sunt 5 secvențe cu densitate 0.50: 1 0; 0 3; 5 2; 2 7; 0 3 5 2.&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; densitatein.txt&lt;br /&gt;
: 0&lt;br /&gt;
: 1 0 3 5 2 7&lt;br /&gt;
: 0.50&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&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;
#3086 - Densitate1&lt;br /&gt;
&lt;br /&gt;
def validare_date(n, a, d):&lt;br /&gt;
    # Verificăm restricțiile privind lungimea șirului&lt;br /&gt;
    if not 1 &amp;lt;= n &amp;lt;= 100000:&lt;br /&gt;
        return False, &amp;quot;Lungimea șirului trebuie să fie între 1 și 100.000.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Verificăm restricțiile privind elementele șirului&lt;br /&gt;
    for elem in a:&lt;br /&gt;
        if not 0 &amp;lt;= elem &amp;lt;= 1000000:&lt;br /&gt;
            return False, &amp;quot;Elementele șirului trebuie să fie între 0 și 1.000.000.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Verificăm restricțiile privind densitatea d&lt;br /&gt;
    if not 0 &amp;lt;= d &amp;lt;= 0.99:&lt;br /&gt;
        return False, &amp;quot;densitatea trebuie să fie între 0 și 0.99.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return True, &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def calculeaza_secvente(n, a, d):&lt;br /&gt;
    numar_secvente = 0&lt;br /&gt;
&lt;br /&gt;
    # Parcurgem șirul pentru a genera secvențele&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i + 1, n + 1):&lt;br /&gt;
            # Extragem secvența curentă&lt;br /&gt;
            secventa_curenta = a[i:j]&lt;br /&gt;
&lt;br /&gt;
            # Calculăm densitatea secvenței curente&lt;br /&gt;
            densitate_secventa = len([x for x in secventa_curenta if x % 2 == 0]) / len(secventa_curenta)&lt;br /&gt;
&lt;br /&gt;
            # Verificăm dacă densitatea este exact d&lt;br /&gt;
            if round(densitate_secventa, 2) == d:&lt;br /&gt;
                numar_secvente += 1&lt;br /&gt;
&lt;br /&gt;
    return numar_secvente&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Citim datele din fișierul de intrare&lt;br /&gt;
with open(&amp;quot;densitatein.txt&amp;quot;, &amp;quot;r&amp;quot;) as f:&lt;br /&gt;
    n = int(f.readline())&lt;br /&gt;
    a = list(map(int, f.readline().split()))&lt;br /&gt;
    d = float(f.readline())&lt;br /&gt;
&lt;br /&gt;
# Validăm datele&lt;br /&gt;
valid, mesaj = validare_date(n, a, d)&lt;br /&gt;
&lt;br /&gt;
# dacă datele sunt valide, rezolvăm problema și scriem rezultatul în fișierul de ieșire&lt;br /&gt;
if valid:&lt;br /&gt;
    print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
    rezultat = calculeaza_secvente(n, a, d)&lt;br /&gt;
    with open(&amp;quot;densitateout.txt&amp;quot;, &amp;quot;w&amp;quot;) as f_out:&lt;br /&gt;
        f_out.write(str(rezultat))&lt;br /&gt;
else:&lt;br /&gt;
    print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
</feed>