<?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=2100_-_Prod_Nr</id>
	<title>2100 - Prod Nr - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=2100_-_Prod_Nr"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2100_-_Prod_Nr&amp;action=history"/>
	<updated>2026-05-01T03:41:39Z</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=2100_-_Prod_Nr&amp;diff=9745&amp;oldid=prev</id>
		<title>Cristina94: Pagină nouă: ==Enunţ== Se consideră o succesiune de numere naturale a[1] a[2] ... a[N]. Cu aceste numere se construieşte un şir de caractere astfel: pentru fiecare număr a[i] din şir (i=1, 2, ..., N) se scrie mai întâi numărul de cifre ale lui a[i], apoi cifrele lui a[i].  ==Cerința== Scrieţi un program care pe baza şirului de caractere să determine câte numere sunt în succesiune, precum şi descompunerea în factori primi a produsului numerelor din succesiune.  ==Date de i...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=2100_-_Prod_Nr&amp;diff=9745&amp;oldid=prev"/>
		<updated>2024-04-01T07:00:56Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: ==Enunţ== Se consideră o succesiune de numere naturale a[1] a[2] ... a[N]. Cu aceste numere se construieşte un şir de caractere astfel: pentru fiecare număr a[i] din şir (i=1, 2, ..., N) se scrie mai întâi numărul de cifre ale lui a[i], apoi cifrele lui a[i].  ==Cerința== Scrieţi un program care pe baza şirului de caractere să determine câte numere sunt în succesiune, precum şi descompunerea în factori primi a produsului numerelor din succesiune.  ==Date de i...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Enunţ==&lt;br /&gt;
Se consideră o succesiune de numere naturale a[1] a[2] ... a[N]. Cu aceste numere se construieşte un şir de caractere astfel: pentru fiecare număr a[i] din şir (i=1, 2, ..., N) se scrie mai întâi numărul de cifre ale lui a[i], apoi cifrele lui a[i].&lt;br /&gt;
&lt;br /&gt;
==Cerința==&lt;br /&gt;
Scrieţi un program care pe baza şirului de caractere să determine câte numere sunt în succesiune, precum şi descompunerea în factori primi a produsului numerelor din succesiune.&lt;br /&gt;
&lt;br /&gt;
==Date de intrare==&lt;br /&gt;
Fişierul de intrare prodnr.in conţine pe prima linie şirul de caractere.&lt;br /&gt;
&lt;br /&gt;
==Date de ieșire==&lt;br /&gt;
Fişierul de ieşire prodnr.out va conţine pe prima linie numărul natural N, reprezentând numărul de numere din succesiune. Pe următoarele linii va fi scrisă descompunerea în factori primi a produsului celor N numere din succesiune. Pe fiecare linie vor fi scrise două numere naturale separate printr-un singur spaţiu f m, unde f reprezintă factorul prim, iar m multiplicitatea acestuia în produs. Factorii primi vor fi afişaţi în fişier în ordine strict crescătoare.&lt;br /&gt;
&lt;br /&gt;
==Restricții și precizări==&lt;br /&gt;
*Lungimea şirului este de cel mult 30.000;&lt;br /&gt;
*Numerele din succesiune sunt nenule şi au cel mult 5 cifre.&lt;br /&gt;
*Produsul numerelor este strict mai mare decât 1.&lt;br /&gt;
&lt;br /&gt;
==Exemplu 1==&lt;br /&gt;
;prodnr.in&lt;br /&gt;
:410242253100213235&lt;br /&gt;
&lt;br /&gt;
;prodnr.out&lt;br /&gt;
:5&lt;br /&gt;
:2 12&lt;br /&gt;
:5 5&lt;br /&gt;
:7 1&lt;br /&gt;
:13 1&lt;br /&gt;
&lt;br /&gt;
==Explicație==&lt;br /&gt;
Numerele sunt: 1024 25 100 13 35&lt;br /&gt;
&lt;br /&gt;
==Exemplu 2==&lt;br /&gt;
;prodnr.in&lt;br /&gt;
:12a34b&lt;br /&gt;
&lt;br /&gt;
;prodnr.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;
#2100 ProdNr&lt;br /&gt;
def descompunere_in_factori_primi(n):&lt;br /&gt;
  factori = {}&lt;br /&gt;
  divizor = 2&lt;br /&gt;
  while n &amp;gt; 1:&lt;br /&gt;
    if n % divizor == 0:&lt;br /&gt;
      if divizor not in factori:&lt;br /&gt;
        factori[divizor] = 1&lt;br /&gt;
      else:&lt;br /&gt;
        factori[divizor] += 1&lt;br /&gt;
      n //= divizor&lt;br /&gt;
    else:&lt;br /&gt;
      divizor += 1&lt;br /&gt;
  return factori&lt;br /&gt;
&lt;br /&gt;
def verifica_date_intrare(sir):&lt;br /&gt;
  if not sir:&lt;br /&gt;
    return False&lt;br /&gt;
  for caracter in sir:&lt;br /&gt;
    if not caracter.isdigit():&lt;br /&gt;
      return False&lt;br /&gt;
  return True&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
  # Citirea şirului de caractere&lt;br /&gt;
  with open(&amp;quot;prodnr.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
    sir = fin.readline().strip()&lt;br /&gt;
&lt;br /&gt;
  # Verificarea datelor de intrare&lt;br /&gt;
  if not verifica_date_intrare(sir):&lt;br /&gt;
    # Scrierea mesajului de date invalide în fișierul de ieșire&lt;br /&gt;
    with open(&amp;quot;prodnr.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
      fout.write(&amp;quot;Date de intrare invalide!&amp;quot;)&lt;br /&gt;
    return&lt;br /&gt;
&lt;br /&gt;
  # Extrage numerele din şir&lt;br /&gt;
  numere = []&lt;br /&gt;
  i = 0&lt;br /&gt;
  while i &amp;lt; len(sir):&lt;br /&gt;
    lungime_numar = int(sir[i])&lt;br /&gt;
    numar = int(sir[i + 1:i + 1 + lungime_numar])&lt;br /&gt;
    numere.append(numar)&lt;br /&gt;
    i += 1 + lungime_numar&lt;br /&gt;
&lt;br /&gt;
  # Calculul numărului de numere din succesiune&lt;br /&gt;
  N = len(numere)&lt;br /&gt;
&lt;br /&gt;
  # Calculul produsului numerelor din succesiune&lt;br /&gt;
  produs = 1&lt;br /&gt;
  for numar in numere:&lt;br /&gt;
    produs *= numar&lt;br /&gt;
&lt;br /&gt;
  # Calculul descompunerii în factori primi a produsului&lt;br /&gt;
  descompunere = descompunere_in_factori_primi(produs)&lt;br /&gt;
&lt;br /&gt;
  # Scrierea rezultatelor în fișierul de ieșire&lt;br /&gt;
  with open(&amp;quot;prodnr.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
    # Scrierea numărului de numere din succesiune&lt;br /&gt;
    fout.write(str(N) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    # Scrierea descompunerii în factori primi&lt;br /&gt;
    for factor, multiplicitate in descompunere.items():&lt;br /&gt;
      fout.write(f&amp;quot;{factor} {multiplicitate}\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>