<?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=1789_-_3_Secv</id>
	<title>1789 - 3 Secv - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1789_-_3_Secv"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1789_-_3_Secv&amp;action=history"/>
	<updated>2026-05-02T07:53:19Z</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=1789_-_3_Secv&amp;diff=9743&amp;oldid=prev</id>
		<title>Cristina94: Pagină nouă: ==Cerința== Se consideră un șir de n elemente numere naturale. O subsecvență se definește ca o succesiune de elemente ale șirului luate de pe poziții consecutive.  De exemplu şirul 1 4 3 5 are 10 subsecvenţe:  *4 subsecvențe de lungime 1 **1 **4 **3 **5 *3 subsecvențe de lungime 2 **1 4 **4 3 **3 5 *2 subsecvențe de lungime 3 **1 4 3 **4 3 5 *1 subsecvenţă de lungime 4 **1 4 3 5 Să se scrie un program care pentru un şir cunoscut determină pentru câte subsec...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1789_-_3_Secv&amp;diff=9743&amp;oldid=prev"/>
		<updated>2024-04-01T05:58:06Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Cerința== Se consideră un șir de n elemente numere naturale. O subsecvență se definește ca o succesiune de elemente ale șirului luate de pe poziții consecutive.  De exemplu şirul 1 4 3 5 are 10 subsecvenţe:  *4 subsecvențe de lungime 1 **1 **4 **3 **5 *3 subsecvențe de lungime 2 **1 4 **4 3 **3 5 *2 subsecvențe de lungime 3 **1 4 3 **4 3 5 *1 subsecvenţă de lungime 4 **1 4 3 5 Să se scrie un program care pentru un şir cunoscut determină pentru câte subsec...&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;
Se consideră un șir de n elemente numere naturale. O subsecvență se definește ca o succesiune de elemente ale șirului luate de pe poziții consecutive.&lt;br /&gt;
&lt;br /&gt;
De exemplu şirul 1 4 3 5 are 10 subsecvenţe:&lt;br /&gt;
&lt;br /&gt;
*4 subsecvențe de lungime 1&lt;br /&gt;
**1&lt;br /&gt;
**4&lt;br /&gt;
**3&lt;br /&gt;
**5&lt;br /&gt;
*3 subsecvențe de lungime 2&lt;br /&gt;
**1 4&lt;br /&gt;
**4 3&lt;br /&gt;
**3 5&lt;br /&gt;
*2 subsecvențe de lungime 3&lt;br /&gt;
**1 4 3&lt;br /&gt;
**4 3 5&lt;br /&gt;
*1 subsecvenţă de lungime 4&lt;br /&gt;
**1 4 3 5&lt;br /&gt;
Să se scrie un program care pentru un şir cunoscut determină pentru câte subsecvenţe ale şirului suma elementelor care le alcătuiesc are un anumit rest dat la împărţirea cu 3.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fișierul de intrare 3secv.in conține pe prima linie două numere naturale n şi r, separate prin spaţiu, n reprezentând numărul de elemente din şirul dat, iar r reprezentând restul pentru care trebuie rezolvată cerinţa. Pe linia a doua vor fi n numere naturale separate prin câte un spaţiu, reprezentând elementele şirului dat.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Fișierul de ieșire 3secv.out va conține pe prima linie un număr natural reprezentând numărul de subsecvențe ale șirului pentru care suma elementelor dă restul r la împărțirea cu 3.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
*1 ≤ n ≤ 1.000.000&lt;br /&gt;
*r ∈ {0,1,2}&lt;br /&gt;
*Elementele șirului sunt numere naturale mai mici sau egale cu 32767&lt;br /&gt;
&lt;br /&gt;
==Exemplul 1==&lt;br /&gt;
;3secv.in&lt;br /&gt;
:4 0&lt;br /&gt;
:1 4 3 5&lt;br /&gt;
&lt;br /&gt;
;3secv.out&lt;br /&gt;
:2&lt;br /&gt;
&lt;br /&gt;
==Exemplul 2==&lt;br /&gt;
;3secv.in&lt;br /&gt;
:4 1&lt;br /&gt;
:1 4 3 5&lt;br /&gt;
&lt;br /&gt;
;3secv.out&lt;br /&gt;
:4&lt;br /&gt;
&lt;br /&gt;
==Exemplul 3==&lt;br /&gt;
;3secv.in&lt;br /&gt;
:4 2&lt;br /&gt;
:1 4 3 5&lt;br /&gt;
&lt;br /&gt;
;3secv.out&lt;br /&gt;
:4&lt;br /&gt;
&lt;br /&gt;
==Exemplul 4==&lt;br /&gt;
;3secv.in&lt;br /&gt;
:1000001 1&lt;br /&gt;
:1 2 3 4 5 6 1000001&lt;br /&gt;
&lt;br /&gt;
;3secv.out&lt;br /&gt;
:Date de intrare invalide.&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;
#1789 3secv&lt;br /&gt;
def is_valid_input(n, r, arr):&lt;br /&gt;
  # Verificăm dacă n și r sunt în limitele impuse&lt;br /&gt;
  if not (1 &amp;lt;= n &amp;lt;= 1000000 and r in {0, 1, 2}):&lt;br /&gt;
    return False&lt;br /&gt;
  # Verificăm dacă toate elementele din șir sunt numere naturale mai mici sau egale cu 32767&lt;br /&gt;
  if any(not (1 &amp;lt;= x &amp;lt;= 32767) for x in arr):&lt;br /&gt;
    return False&lt;br /&gt;
  return True&lt;br /&gt;
&lt;br /&gt;
def count_subsequences(n, arr, r):&lt;br /&gt;
  count = 0&lt;br /&gt;
  for i in range(n):&lt;br /&gt;
    for j in range(i, n):&lt;br /&gt;
      subsequence_sum = sum(arr[i:j+1])&lt;br /&gt;
      if subsequence_sum % 3 == r:&lt;br /&gt;
        count += 1&lt;br /&gt;
  return count&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
  # Citirea datelor de intrare&lt;br /&gt;
  with open(&amp;quot;3secv.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    n, r = map(int, fin.readline().split())&lt;br /&gt;
    arr = list(map(int, fin.readline().split()))&lt;br /&gt;
&lt;br /&gt;
  # Verificarea datelor de intrare&lt;br /&gt;
  if not is_valid_input(n, r, arr):&lt;br /&gt;
    # Scrierea mesajului de date invalide în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;3secv.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
      fout.write(&amp;quot;Date de intrare invalide.\n&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
  # Calculul numărului de subsecvențe cu suma dată prin restul r la împărțirea cu 3&lt;br /&gt;
  result = count_subsequences(n, arr, r)&lt;br /&gt;
  &lt;br /&gt;
  # Scrierea rezultatului în fișierul de ieșire&lt;br /&gt;
  with open(&amp;quot;3secv.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    fout.write(str(result) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
  main()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cristina94</name></author>
	</entry>
</feed>